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.

Files changed (98) hide show
  1. pyvale/__init__.py +51 -52
  2. pyvale/analyticmeshgen.py +101 -0
  3. pyvale/{core/analyticsimdatafactory.py → analyticsimdatafactory.py} +32 -9
  4. pyvale/{core/analyticsimdatagenerator.py → analyticsimdatagenerator.py} +151 -21
  5. pyvale/{core/camera.py → camera.py} +13 -14
  6. pyvale/{core/cameradata.py → cameradata.py} +6 -19
  7. pyvale/{core/cameradata2d.py → cameradata2d.py} +7 -7
  8. pyvale/{core/cameratools.py → cameratools.py} +18 -19
  9. pyvale/{core/cython → cython}/rastercyth.py +9 -9
  10. pyvale/data/__init__.py +5 -7
  11. pyvale/data/case00_HEX20_out.e +0 -0
  12. pyvale/data/case00_HEX27_out.e +0 -0
  13. pyvale/data/case00_HEX8_out.e +0 -0
  14. pyvale/data/case00_TET10_out.e +0 -0
  15. pyvale/data/case00_TET14_out.e +0 -0
  16. pyvale/data/case00_TET4_out.e +0 -0
  17. pyvale/{core/dataset.py → dataset.py} +24 -8
  18. pyvale/{core/errorcalculator.py → errorcalculator.py} +7 -8
  19. pyvale/{core/errordriftcalc.py → errordriftcalc.py} +6 -7
  20. pyvale/{core/errorintegrator.py → errorintegrator.py} +8 -9
  21. pyvale/{core/errorrand.py → errorrand.py} +9 -10
  22. pyvale/{core/errorsysdep.py → errorsysdep.py} +8 -9
  23. pyvale/{core/errorsysfield.py → errorsysfield.py} +13 -14
  24. pyvale/{core/errorsysindep.py → errorsysindep.py} +9 -10
  25. pyvale/examples/__init__.py +5 -7
  26. pyvale/examples/analyticdatagen/__init__.py +5 -7
  27. pyvale/examples/ex1_1_thermal2d.py +6 -9
  28. pyvale/examples/ex1_2_thermal2d.py +6 -9
  29. pyvale/examples/ex1_3_thermal2d.py +6 -9
  30. pyvale/examples/ex1_4_thermal2d.py +6 -9
  31. pyvale/examples/ex1_5_thermal2d.py +6 -9
  32. pyvale/examples/ex2_1_thermal3d .py +6 -9
  33. pyvale/examples/ex2_3_thermal3d.py +6 -9
  34. pyvale/examples/ex3_1_displacement2d.py +6 -9
  35. pyvale/examples/ex3_2_displacement2d.py +5 -8
  36. pyvale/examples/ex3_3_displacement2d.py +6 -9
  37. pyvale/examples/ex3_4_displacement2d.py +6 -9
  38. pyvale/examples/ex4_1_strain2d.py +6 -9
  39. pyvale/examples/ex4_2_strain2d.py +5 -8
  40. pyvale/examples/ex4_3_strain2d.py +6 -9
  41. pyvale/examples/ex5_1_multiphysics2d.py +5 -8
  42. pyvale/examples/ex6_1_multiphysics2d_expsim.py +6 -9
  43. pyvale/examples/ex6_2_multiphysics3d_expsim.py +15 -13
  44. pyvale/examples/features/__init__.py +5 -7
  45. pyvale/examples/rasterisation/ex_rastenp.py +5 -7
  46. pyvale/examples/rasterisation/ex_rastercyth_oneframe.py +5 -7
  47. pyvale/examples/rasterisation/ex_rastercyth_static_cypara.py +5 -7
  48. pyvale/examples/rasterisation/ex_rastercyth_static_pypara.py +5 -7
  49. pyvale/{core/experimentsimulator.py → experimentsimulator.py} +7 -8
  50. pyvale/{core/field.py → field.py} +6 -7
  51. pyvale/{core/fieldconverter.py → fieldconverter.py} +138 -17
  52. pyvale/{core/fieldsampler.py → fieldsampler.py} +9 -10
  53. pyvale/{core/fieldscalar.py → fieldscalar.py} +9 -10
  54. pyvale/{core/fieldtensor.py → fieldtensor.py} +10 -11
  55. pyvale/{core/fieldtransform.py → fieldtransform.py} +6 -7
  56. pyvale/{core/fieldvector.py → fieldvector.py} +10 -11
  57. pyvale/{core/generatorsrandom.py → generatorsrandom.py} +6 -7
  58. pyvale/{core/imagedef2d.py → imagedef2d.py} +9 -10
  59. pyvale/{core/integratorfactory.py → integratorfactory.py} +12 -13
  60. pyvale/{core/integratorquadrature.py → integratorquadrature.py} +9 -10
  61. pyvale/{core/integratorrectangle.py → integratorrectangle.py} +9 -10
  62. pyvale/{core/integratorspatial.py → integratorspatial.py} +7 -8
  63. pyvale/{core/integratortype.py → integratortype.py} +6 -7
  64. pyvale/{core/optimcheckfuncs.py → optimcheckfuncs.py} +1 -1
  65. pyvale/{core/raster.py → raster.py} +6 -7
  66. pyvale/{core/rastercy.py → rastercy.py} +9 -10
  67. pyvale/{core/rasternp.py → rasternp.py} +10 -13
  68. pyvale/{core/rendermesh.py → rendermesh.py} +8 -21
  69. pyvale/{core/sensorarray.py → sensorarray.py} +7 -8
  70. pyvale/{core/sensorarrayfactory.py → sensorarrayfactory.py} +15 -16
  71. pyvale/{core/sensorarraypoint.py → sensorarraypoint.py} +12 -13
  72. pyvale/{core/sensordata.py → sensordata.py} +7 -8
  73. pyvale/{core/sensordescriptor.py → sensordescriptor.py} +6 -7
  74. pyvale/{core/sensortools.py → sensortools.py} +7 -8
  75. pyvale/simcases/case00_HEX20.i +5 -5
  76. pyvale/simcases/case00_HEX27.i +5 -5
  77. pyvale/simcases/case00_HEX8.i +242 -0
  78. pyvale/simcases/case00_TET10.i +2 -2
  79. pyvale/simcases/case00_TET14.i +2 -2
  80. pyvale/simcases/case00_TET4.i +242 -0
  81. pyvale/simcases/run_1case.py +1 -1
  82. pyvale/{core/visualexpplotter.py → visualexpplotter.py} +8 -10
  83. pyvale/{core/visualimagedef.py → visualimagedef.py} +6 -7
  84. pyvale/{core/visualimages.py → visualimages.py} +8 -9
  85. pyvale/{core/visualopts.py → visualopts.py} +6 -7
  86. pyvale/{core/visualsimanimator.py → visualsimanimator.py} +10 -11
  87. pyvale/{core/visualsimplotter.py → visualsimplotter.py} +30 -30
  88. pyvale/{core/visualtools.py → visualtools.py} +7 -8
  89. pyvale/{core/visualtraceplotter.py → visualtraceplotter.py} +9 -10
  90. {pyvale-2025.4.0.dist-info → pyvale-2025.4.1.dist-info}/METADATA +1 -1
  91. pyvale-2025.4.1.dist-info/RECORD +163 -0
  92. {pyvale-2025.4.0.dist-info → pyvale-2025.4.1.dist-info}/WHEEL +1 -1
  93. pyvale/core/__init__.py +0 -7
  94. pyvale/core/analyticmeshgen.py +0 -59
  95. pyvale/core/cython/rastercyth.c +0 -32267
  96. pyvale-2025.4.0.dist-info/RECORD +0 -157
  97. {pyvale-2025.4.0.dist-info → pyvale-2025.4.1.dist-info}/licenses/LICENSE +0 -0
  98. {pyvale-2025.4.0.dist-info → pyvale-2025.4.1.dist-info}/top_level.txt +0 -0
@@ -1,10 +1,9 @@
1
- """
2
- ================================================================================
3
- pyvale: the python validation engine
4
- License: MIT
5
- Copyright (C) 2025 The Computer Aided Validation Team
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.core.sensorarraypoint import SensorArrayPoint
16
- from pyvale.core.fieldconverter import simdata_to_pyvista
17
- from pyvale.core.visualopts import (VisOptsSimSensors,VisOptsImageSave)
18
- from pyvale.core.visualtools import (create_pv_plotter,
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
- pv_simdata = simdata_to_pyvista(sim_data,
112
- None,
113
- sim_data.num_spat_dims)
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
- pv_plot.add_mesh(pv_simdata,
118
- label='sim-data',
119
- show_edges=True,
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
- pv_simdata = simdata_to_pyvista(sim_data,
135
- (component,),
136
- sim_data.num_spat_dims)
133
+ (_,sim_vis) = simdata_to_pyvista(sim_data,
134
+ (component,),
135
+ elem_dims)
137
136
 
138
- pv_plot = create_pv_plotter(vis_opts)
137
+ sim_vis[component] = sim_data.node_vars[component][:,time_step]
139
138
 
140
- pv_plot.add_mesh(pv_simdata,
141
- scalars=pv_simdata[component][:,time_step],
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=True,
144
- show_scalar_bar=True,
145
- scalar_bar_args={"title":component},)
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
- pyvale: the python validation engine
4
- License: MIT
5
- Copyright (C) 2025 The Computer Aided Validation Team
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.core.visualopts import (VisOptsSimSensors,
13
+ from pyvale.visualopts import (VisOptsSimSensors,
15
14
  VisOptsImageSave,
16
15
  EImageType,
17
16
  VisOptsAnimation,
@@ -1,19 +1,18 @@
1
- """
2
- ================================================================================
3
- pyvale: the python validation engine
4
- License: MIT
5
- Copyright (C) 2025 The Computer Aided Validation Team
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.core.sensorarraypoint import SensorArrayPoint
13
- from pyvale.core.visualopts import (PlotOptsGeneral,
11
+ from pyvale.sensorarraypoint import SensorArrayPoint
12
+ from pyvale.visualopts import (PlotOptsGeneral,
14
13
  TraceOptsSensor,
15
14
  TraceOptsExperiment)
16
- from pyvale.core.experimentsimulator import ExperimentSimulator
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.0
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (79.0.1)
2
+ Generator: setuptools (80.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
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
- """
@@ -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)