pyvale 2025.4.0__tar.gz → 2025.5.1__tar.gz
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-2025.4.0/src/pyvale.egg-info → pyvale-2025.5.1}/PKG-INFO +17 -14
- {pyvale-2025.4.0 → pyvale-2025.5.1}/README.md +14 -13
- {pyvale-2025.4.0 → pyvale-2025.5.1}/pyproject.toml +4 -2
- pyvale-2025.5.1/src/pyvale/__init__.py +89 -0
- pyvale-2025.5.1/src/pyvale/analyticmeshgen.py +102 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/analyticsimdatafactory.py +44 -16
- pyvale-2025.5.1/src/pyvale/analyticsimdatagenerator.py +323 -0
- pyvale-2025.5.1/src/pyvale/blendercalibrationdata.py +15 -0
- pyvale-2025.5.1/src/pyvale/blenderlightdata.py +26 -0
- pyvale-2025.5.1/src/pyvale/blendermaterialdata.py +15 -0
- pyvale-2025.5.1/src/pyvale/blenderrenderdata.py +30 -0
- pyvale-2025.5.1/src/pyvale/blenderscene.py +488 -0
- pyvale-2025.5.1/src/pyvale/blendertools.py +420 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/camera.py +15 -15
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/cameradata.py +27 -22
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/cameradata2d.py +8 -6
- pyvale-2025.5.1/src/pyvale/camerastereo.py +217 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/cameratools.py +220 -26
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/cython/rastercyth.py +11 -7
- pyvale-2025.5.1/src/pyvale/data/__init__.py +5 -0
- pyvale-2025.5.1/src/pyvale/data/cal_target.tiff +0 -0
- pyvale-2025.5.1/src/pyvale/data/case00_HEX20_out.e +0 -0
- pyvale-2025.5.1/src/pyvale/data/case00_HEX27_out.e +0 -0
- pyvale-2025.5.1/src/pyvale/data/case00_HEX8_out.e +0 -0
- pyvale-2025.5.1/src/pyvale/data/case00_TET10_out.e +0 -0
- pyvale-2025.5.1/src/pyvale/data/case00_TET14_out.e +0 -0
- pyvale-2025.5.1/src/pyvale/data/case00_TET4_out.e +0 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/dataset.py +91 -16
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/errorcalculator.py +13 -16
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/errordriftcalc.py +14 -14
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/errorintegrator.py +25 -28
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/errorrand.py +39 -46
- pyvale-2025.5.1/src/pyvale/errorsyscalib.py +134 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/errorsysdep.py +25 -29
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/errorsysfield.py +59 -52
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/errorsysindep.py +85 -182
- pyvale-2025.5.1/src/pyvale/examples/__init__.py +5 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex1_1_basicscalars_therm2d.py +131 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex1_2_sensormodel_therm2d.py +158 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex1_3_customsens_therm3d.py +216 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex1_4_basicerrors_therm3d.py +153 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex1_5_fielderrs_therm3d.py +168 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex1_6_caliberrs_therm2d.py +133 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex1_7_spatavg_therm2d.py +123 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex2_1_basicvectors_disp2d.py +112 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex2_2_vectorsens_disp2d.py +111 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex2_3_sensangle_disp2d.py +139 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex2_4_chainfielderrs_disp2d.py +196 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex2_5_vectorfields3d_disp3d.py +109 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex3_1_basictensors_strain2d.py +114 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex3_2_tensorsens2d_strain2d.py +111 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex3_3_tensorsens3d_strain3d.py +182 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex4_1_expsim2d_thermmech2d.py +171 -0
- pyvale-2025.5.1/src/pyvale/examples/basics/ex4_2_expsim3d_thermmech3d.py +252 -0
- {pyvale-2025.4.0/src/pyvale/examples/analyticdatagen → pyvale-2025.5.1/src/pyvale/examples/genanalyticdata}/ex1_1_scalarvisualisation.py +6 -9
- {pyvale-2025.4.0/src/pyvale/examples/analyticdatagen → pyvale-2025.5.1/src/pyvale/examples/genanalyticdata}/ex1_2_scalarcasebuild.py +8 -11
- {pyvale-2025.4.0/src/pyvale/examples/analyticdatagen → pyvale-2025.5.1/src/pyvale/examples/genanalyticdata}/ex2_1_analyticsensors.py +9 -12
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/examples/imagedef2d/ex_imagedef2d_todisk.py +8 -15
- pyvale-2025.5.1/src/pyvale/examples/renderblender/ex1_1_blenderscene.py +121 -0
- pyvale-2025.5.1/src/pyvale/examples/renderblender/ex1_2_blenderdeformed.py +119 -0
- pyvale-2025.5.1/src/pyvale/examples/renderblender/ex2_1_stereoscene.py +128 -0
- pyvale-2025.5.1/src/pyvale/examples/renderblender/ex2_2_stereodeformed.py +131 -0
- pyvale-2025.5.1/src/pyvale/examples/renderblender/ex3_1_blendercalibration.py +120 -0
- {pyvale-2025.4.0/src/pyvale/examples/rasterisation → pyvale-2025.5.1/src/pyvale/examples/renderrasterisation}/ex_rastenp.py +6 -7
- {pyvale-2025.4.0/src/pyvale/examples/rasterisation → pyvale-2025.5.1/src/pyvale/examples/renderrasterisation}/ex_rastercyth_oneframe.py +5 -7
- {pyvale-2025.4.0/src/pyvale/examples/rasterisation → pyvale-2025.5.1/src/pyvale/examples/renderrasterisation}/ex_rastercyth_static_cypara.py +6 -13
- {pyvale-2025.4.0/src/pyvale/examples/rasterisation → pyvale-2025.5.1/src/pyvale/examples/renderrasterisation}/ex_rastercyth_static_pypara.py +9 -12
- pyvale-2025.4.0/src/pyvale/examples/ex1_4_thermal2d.py → pyvale-2025.5.1/src/pyvale/examples/visualisation/ex1_1_plot_traces.py +33 -20
- pyvale-2025.4.0/src/pyvale/examples/features/ex_animation_tools_3dmonoblock.py → pyvale-2025.5.1/src/pyvale/examples/visualisation/ex2_1_animate_sim.py +37 -31
- pyvale-2025.5.1/src/pyvale/experimentsimulator.py +175 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/field.py +6 -14
- pyvale-2025.5.1/src/pyvale/fieldconverter.py +351 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/fieldsampler.py +9 -10
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/fieldscalar.py +17 -18
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/fieldtensor.py +23 -26
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/fieldtransform.py +9 -5
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/fieldvector.py +14 -16
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/generatorsrandom.py +29 -52
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/imagedef2d.py +11 -8
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/integratorfactory.py +12 -13
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/integratorquadrature.py +57 -32
- pyvale-2025.5.1/src/pyvale/integratorrectangle.py +165 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/integratorspatial.py +9 -10
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/integratortype.py +7 -8
- pyvale-2025.5.1/src/pyvale/output.py +17 -0
- pyvale-2025.5.1/src/pyvale/pyvaleexceptions.py +11 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/raster.py +8 -8
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/rastercy.py +11 -10
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/rasternp.py +12 -13
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/rendermesh.py +10 -19
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/sensorarray.py +7 -8
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/sensorarrayfactory.py +64 -78
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/sensorarraypoint.py +39 -41
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/sensordata.py +7 -8
- pyvale-2025.5.1/src/pyvale/sensordescriptor.py +213 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/sensortools.py +8 -9
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case00_HEX20.i +5 -5
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case00_HEX27.i +5 -5
- pyvale-2025.5.1/src/pyvale/simcases/case00_HEX8.i +242 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case00_TET10.i +2 -2
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case00_TET14.i +2 -2
- pyvale-2025.5.1/src/pyvale/simcases/case00_TET4.i +242 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/run_1case.py +1 -1
- pyvale-2025.5.1/src/pyvale/simtools.py +67 -0
- pyvale-2025.5.1/src/pyvale/visualexpplotter.py +191 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/visualimagedef.py +13 -10
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/visualimages.py +10 -9
- pyvale-2025.5.1/src/pyvale/visualopts.py +493 -0
- {pyvale-2025.4.0/src/pyvale/core → pyvale-2025.5.1/src/pyvale}/visualsimanimator.py +47 -19
- pyvale-2025.5.1/src/pyvale/visualsimsensors.py +318 -0
- pyvale-2025.5.1/src/pyvale/visualtools.py +136 -0
- pyvale-2025.5.1/src/pyvale/visualtraceplotter.py +142 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1/src/pyvale.egg-info}/PKG-INFO +17 -14
- pyvale-2025.5.1/src/pyvale.egg-info/SOURCES.txt +175 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale.egg-info/requires.txt +2 -0
- pyvale-2025.4.0/src/pyvale/__init__.py +0 -75
- pyvale-2025.4.0/src/pyvale/core/__init__.py +0 -7
- pyvale-2025.4.0/src/pyvale/core/analyticmeshgen.py +0 -59
- pyvale-2025.4.0/src/pyvale/core/analyticsimdatagenerator.py +0 -160
- pyvale-2025.4.0/src/pyvale/core/cython/rastercyth.c +0 -32267
- pyvale-2025.4.0/src/pyvale/core/experimentsimulator.py +0 -99
- pyvale-2025.4.0/src/pyvale/core/fieldconverter.py +0 -154
- pyvale-2025.4.0/src/pyvale/core/integratorrectangle.py +0 -88
- pyvale-2025.4.0/src/pyvale/core/optimcheckfuncs.py +0 -153
- pyvale-2025.4.0/src/pyvale/core/sensordescriptor.py +0 -101
- pyvale-2025.4.0/src/pyvale/core/visualexpplotter.py +0 -151
- pyvale-2025.4.0/src/pyvale/core/visualopts.py +0 -180
- pyvale-2025.4.0/src/pyvale/core/visualsimplotter.py +0 -182
- pyvale-2025.4.0/src/pyvale/core/visualtools.py +0 -81
- pyvale-2025.4.0/src/pyvale/core/visualtraceplotter.py +0 -256
- pyvale-2025.4.0/src/pyvale/data/__init__.py +0 -7
- pyvale-2025.4.0/src/pyvale/examples/__init__.py +0 -7
- pyvale-2025.4.0/src/pyvale/examples/analyticdatagen/__init__.py +0 -7
- pyvale-2025.4.0/src/pyvale/examples/ex1_1_thermal2d.py +0 -89
- pyvale-2025.4.0/src/pyvale/examples/ex1_2_thermal2d.py +0 -111
- pyvale-2025.4.0/src/pyvale/examples/ex1_3_thermal2d.py +0 -113
- pyvale-2025.4.0/src/pyvale/examples/ex1_5_thermal2d.py +0 -105
- pyvale-2025.4.0/src/pyvale/examples/ex2_1_thermal3d .py +0 -87
- pyvale-2025.4.0/src/pyvale/examples/ex2_2_thermal3d.py +0 -51
- pyvale-2025.4.0/src/pyvale/examples/ex2_3_thermal3d.py +0 -109
- pyvale-2025.4.0/src/pyvale/examples/ex3_1_displacement2d.py +0 -47
- pyvale-2025.4.0/src/pyvale/examples/ex3_2_displacement2d.py +0 -79
- pyvale-2025.4.0/src/pyvale/examples/ex3_3_displacement2d.py +0 -104
- pyvale-2025.4.0/src/pyvale/examples/ex3_4_displacement2d.py +0 -105
- pyvale-2025.4.0/src/pyvale/examples/ex4_1_strain2d.py +0 -57
- pyvale-2025.4.0/src/pyvale/examples/ex4_2_strain2d.py +0 -79
- pyvale-2025.4.0/src/pyvale/examples/ex4_3_strain2d.py +0 -100
- pyvale-2025.4.0/src/pyvale/examples/ex5_1_multiphysics2d.py +0 -78
- pyvale-2025.4.0/src/pyvale/examples/ex6_1_multiphysics2d_expsim.py +0 -118
- pyvale-2025.4.0/src/pyvale/examples/ex6_2_multiphysics3d_expsim.py +0 -158
- pyvale-2025.4.0/src/pyvale/examples/features/__init__.py +0 -7
- pyvale-2025.4.0/src/pyvale/examples/features/ex_area_avg.py +0 -89
- pyvale-2025.4.0/src/pyvale/examples/features/ex_calibration_error.py +0 -108
- pyvale-2025.4.0/src/pyvale/examples/features/ex_chain_field_errs.py +0 -141
- pyvale-2025.4.0/src/pyvale/examples/features/ex_field_errs.py +0 -78
- pyvale-2025.4.0/src/pyvale/examples/features/ex_sensor_single_angle_batch.py +0 -110
- pyvale-2025.4.0/src/pyvale.egg-info/SOURCES.txt +0 -160
- {pyvale-2025.4.0 → pyvale-2025.5.1}/LICENSE +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/setup.cfg +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/data/case13_out.e +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/data/case16_out.e +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/data/case17_out.e +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/data/case18_1_out.e +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/data/case18_2_out.e +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/data/case18_3_out.e +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/data/case25_out.e +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/data/case26_out.e +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/data/optspeckle_2464x2056px_spec5px_8bit_gblur1px.tiff +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case01.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case02.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case03.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case04.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case05.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case06.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case07.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case07.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case08.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case08.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case09.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case09.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case10.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case10.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case11.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case11.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case12.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case12.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case13.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case14.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case15.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case15.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case16.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case16.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case17.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case17.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case18.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case18_1.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case18_2.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case18_3.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case19.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case19.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case20.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case20.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case21.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case21.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case22.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case22.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case23.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case23.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case24.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case24.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case25.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case25.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case26.geo +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/case26.i +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/run_all_cases.py +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/run_build_case.py +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale/simcases/run_example_cases.py +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale.egg-info/dependency_links.txt +0 -0
- {pyvale-2025.4.0 → pyvale-2025.5.1}/src/pyvale.egg-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.5.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
|
|
@@ -44,15 +44,19 @@ Requires-Dist: numba>=0.59.1
|
|
|
44
44
|
Requires-Dist: pymoo>=0.6.1.3
|
|
45
45
|
Requires-Dist: Cython>=3.0.0
|
|
46
46
|
Requires-Dist: bpy>=4.2.0
|
|
47
|
+
Requires-Dist: pyyaml>=6.0.2
|
|
48
|
+
Requires-Dist: pytest>=8.3.5
|
|
47
49
|
Dynamic: license-file
|
|
48
50
|
|
|
49
51
|
# pyvale
|
|
50
52
|
The python validation engine (`pyvale`): 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.
|
|
51
53
|
|
|
52
54
|
## Quick Demo: Simulating Point Sensors
|
|
53
|
-
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.
|
|
55
|
+
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.
|
|
54
56
|
|
|
55
|
-
|
|
57
|
+
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).
|
|
58
|
+
|
|
59
|
+
|||
|
|
56
60
|
|--|--|
|
|
57
61
|
|*Visualisation of the thermcouple locations.*|*Visualisation of the strain gauge locations.*|
|
|
58
62
|
|
|
@@ -118,21 +122,20 @@ pip install -e .
|
|
|
118
122
|
pip install -e ./dependencies/mooseherder
|
|
119
123
|
```
|
|
120
124
|
|
|
121
|
-
### MOOSE
|
|
125
|
+
### Running Physics Simulations with MOOSE
|
|
122
126
|
`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.
|
|
123
127
|
|
|
124
|
-
## Getting Started
|
|
125
|
-
The examples folder in "pyvale/examples" includes a sequence of examples of increasing complexity that demonstrate the functionality of `pyvale`.
|
|
126
|
-
|
|
127
128
|
## Contributors
|
|
128
129
|
The Computer Aided Validation Team at UKAEA:
|
|
129
|
-
- Lloyd Fletcher (ScepticalRabbit), UK Atomic Energy Authority
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
- Lorna Sibson (lornasibson), UK Atomic Energy Authority
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
-
|
|
130
|
+
- Lloyd Fletcher ([ScepticalRabbit](https://github.com/ScepticalRabbit)), UK Atomic Energy Authority
|
|
131
|
+
- Joel Hirst ([JoelPhys](https://github.com/JoelPhys)), UK Atomic Energy Authority
|
|
132
|
+
- John Charlton ([coolmule0](https://github.com/coolmule0)), UK Atomic Energy Authority
|
|
133
|
+
- Lorna Sibson ([lornasibson](https://github.com/lornasibson)), UK Atomic Energy Authority
|
|
134
|
+
- Megan Sampson ([meganasampson](https://github.com/meganasampson)), UK Atomic Energy Authority
|
|
135
|
+
- Michael Atkinson ([mikesmic](https://github.com/mikesmic)), UK Atomic Energy Authority
|
|
136
|
+
- Adel Tayeb ([3adelTayeb](https://github.com/3adelTayeb)), UK Atomic Energy Authority
|
|
137
|
+
- Alex Marsh ([alexmarsh2](https://github.com/alexmarsh2)), UK Atomic Energy Authority
|
|
138
|
+
- Rory Spencer ([fusmatrs](https://github.com/orgs/Computer-Aided-Validation-Laboratory/people/fusmatrs)), UK Atomic Energy Authority
|
|
136
139
|
|
|
137
140
|
|
|
138
141
|
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
The python validation engine (`pyvale`): 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.
|
|
3
3
|
|
|
4
4
|
## Quick Demo: Simulating Point Sensors
|
|
5
|
-
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.
|
|
5
|
+
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.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
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).
|
|
8
|
+
|
|
9
|
+
|||
|
|
8
10
|
|--|--|
|
|
9
11
|
|*Visualisation of the thermcouple locations.*|*Visualisation of the strain gauge locations.*|
|
|
10
12
|
|
|
@@ -70,21 +72,20 @@ pip install -e .
|
|
|
70
72
|
pip install -e ./dependencies/mooseherder
|
|
71
73
|
```
|
|
72
74
|
|
|
73
|
-
### MOOSE
|
|
75
|
+
### Running Physics Simulations with MOOSE
|
|
74
76
|
`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.
|
|
75
77
|
|
|
76
|
-
## Getting Started
|
|
77
|
-
The examples folder in "pyvale/examples" includes a sequence of examples of increasing complexity that demonstrate the functionality of `pyvale`.
|
|
78
|
-
|
|
79
78
|
## Contributors
|
|
80
79
|
The Computer Aided Validation Team at UKAEA:
|
|
81
|
-
- Lloyd Fletcher (ScepticalRabbit), UK Atomic Energy Authority
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
- Lorna Sibson (lornasibson), UK Atomic Energy Authority
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
80
|
+
- Lloyd Fletcher ([ScepticalRabbit](https://github.com/ScepticalRabbit)), UK Atomic Energy Authority
|
|
81
|
+
- Joel Hirst ([JoelPhys](https://github.com/JoelPhys)), UK Atomic Energy Authority
|
|
82
|
+
- John Charlton ([coolmule0](https://github.com/coolmule0)), UK Atomic Energy Authority
|
|
83
|
+
- Lorna Sibson ([lornasibson](https://github.com/lornasibson)), UK Atomic Energy Authority
|
|
84
|
+
- Megan Sampson ([meganasampson](https://github.com/meganasampson)), UK Atomic Energy Authority
|
|
85
|
+
- Michael Atkinson ([mikesmic](https://github.com/mikesmic)), UK Atomic Energy Authority
|
|
86
|
+
- Adel Tayeb ([3adelTayeb](https://github.com/3adelTayeb)), UK Atomic Energy Authority
|
|
87
|
+
- Alex Marsh ([alexmarsh2](https://github.com/alexmarsh2)), UK Atomic Energy Authority
|
|
88
|
+
- Rory Spencer ([fusmatrs](https://github.com/orgs/Computer-Aided-Validation-Laboratory/people/fusmatrs)), UK Atomic Energy Authority
|
|
88
89
|
|
|
89
90
|
|
|
90
91
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["setuptools>=61.0", "wheel"]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel", "Cython", "numpy"]
|
|
3
3
|
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyvale"
|
|
7
|
-
version = "2025.
|
|
7
|
+
version = "2025.5.1"
|
|
8
8
|
description = "An all-in-one package for sensor simulation, sensor uncertainty quantification, sensor placement optimisation and simulation calibration or validation."
|
|
9
9
|
authors = [
|
|
10
10
|
{ name = "scepticalrabbit et al.", email = "thescepticalrabbit@gmail.com" },
|
|
@@ -28,6 +28,8 @@ dependencies = [
|
|
|
28
28
|
"pymoo>=0.6.1.3",
|
|
29
29
|
"Cython>=3.0.0",
|
|
30
30
|
"bpy>=4.2.0",
|
|
31
|
+
"pyyaml>=6.0.2",
|
|
32
|
+
"pytest>=8.3.5",
|
|
31
33
|
]
|
|
32
34
|
|
|
33
35
|
[project.urls]
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# pyvale: the python validation engine
|
|
3
|
+
# License: MIT
|
|
4
|
+
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
# ==============================================================================
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
`pyvale`: the python validation engine. Used to simulate experimental data from
|
|
9
|
+
an input multi-physics simulation by explicitly modelling sensors with realistic
|
|
10
|
+
uncertainties. Useful for experimental design, sensor placement optimisation,
|
|
11
|
+
testing simulation validation metrics and testing digital shadows/twins.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
# NOTE: this simplifies and decouples how the user calls pyvale from the
|
|
15
|
+
# underlying project structure: the user should be able to use 'pyvale.'
|
|
16
|
+
# and access everything in one layer without multiple import dots
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
from pyvale.dataset import *
|
|
20
|
+
|
|
21
|
+
from pyvale.field import *
|
|
22
|
+
from pyvale.fieldscalar import *
|
|
23
|
+
from pyvale.fieldvector import *
|
|
24
|
+
from pyvale.fieldtensor import *
|
|
25
|
+
from pyvale.fieldconverter import *
|
|
26
|
+
from pyvale.fieldtransform import *
|
|
27
|
+
|
|
28
|
+
from pyvale.integratorspatial import *
|
|
29
|
+
from pyvale.integratorquadrature import *
|
|
30
|
+
from pyvale.integratorrectangle import *
|
|
31
|
+
from pyvale.integratorfactory import *
|
|
32
|
+
|
|
33
|
+
from pyvale.sensordescriptor import *
|
|
34
|
+
from pyvale.sensortools import *
|
|
35
|
+
from pyvale.sensorarray import *
|
|
36
|
+
from pyvale.sensorarrayfactory import *
|
|
37
|
+
from pyvale.sensorarraypoint import *
|
|
38
|
+
from pyvale.sensordata import *
|
|
39
|
+
|
|
40
|
+
from pyvale.camera import *
|
|
41
|
+
from pyvale.cameradata import *
|
|
42
|
+
from pyvale.cameradata2d import *
|
|
43
|
+
from pyvale.cameratools import *
|
|
44
|
+
from pyvale.camerastereo import *
|
|
45
|
+
|
|
46
|
+
import pyvale.cython.rastercyth as rastercyth
|
|
47
|
+
from pyvale.rastercy import *
|
|
48
|
+
|
|
49
|
+
from pyvale.rendermesh import *
|
|
50
|
+
from pyvale.rasternp import *
|
|
51
|
+
|
|
52
|
+
from pyvale.imagedef2d import *
|
|
53
|
+
|
|
54
|
+
from pyvale.errorintegrator import *
|
|
55
|
+
from pyvale.errorrand import *
|
|
56
|
+
from pyvale.errorsysindep import *
|
|
57
|
+
from pyvale.errorsysdep import *
|
|
58
|
+
from pyvale.errorsysfield import *
|
|
59
|
+
from pyvale.errorsyscalib import *
|
|
60
|
+
from pyvale.errordriftcalc import *
|
|
61
|
+
|
|
62
|
+
from pyvale.generatorsrandom import *
|
|
63
|
+
|
|
64
|
+
from pyvale.visualopts import *
|
|
65
|
+
from pyvale.visualtools import *
|
|
66
|
+
from pyvale.visualsimsensors import *
|
|
67
|
+
from pyvale.visualsimanimator import *
|
|
68
|
+
from pyvale.visualexpplotter import *
|
|
69
|
+
from pyvale.visualtraceplotter import *
|
|
70
|
+
from pyvale.visualimages import *
|
|
71
|
+
from pyvale.visualimagedef import *
|
|
72
|
+
|
|
73
|
+
from pyvale.analyticmeshgen import *
|
|
74
|
+
from pyvale.analyticsimdatagenerator import *
|
|
75
|
+
from pyvale.analyticsimdatafactory import *
|
|
76
|
+
|
|
77
|
+
from pyvale.experimentsimulator import *
|
|
78
|
+
|
|
79
|
+
from pyvale.blendercalibrationdata import *
|
|
80
|
+
from pyvale.blenderlightdata import *
|
|
81
|
+
from pyvale.blendermaterialdata import *
|
|
82
|
+
from pyvale.blenderrenderdata import *
|
|
83
|
+
from pyvale.blenderscene import *
|
|
84
|
+
from pyvale.blendertools import *
|
|
85
|
+
from pyvale.simtools import *
|
|
86
|
+
|
|
87
|
+
from pyvale.output import *
|
|
88
|
+
from pyvale.pyvaleexceptions import *
|
|
89
|
+
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#===============================================================================
|
|
2
|
+
# pyvale: the python validation engine
|
|
3
|
+
# License: MIT
|
|
4
|
+
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
#===============================================================================
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
Analytic mesh creation tools for testing pyvale sensor simulation and
|
|
9
|
+
uncertainty quantification functionality with a known analytic function for the
|
|
10
|
+
scalar/vector/tensor field of interest.
|
|
11
|
+
"""
|
|
12
|
+
import numpy as np
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def rectangle_mesh_2d(leng_x: float,
|
|
16
|
+
leng_y: float,
|
|
17
|
+
n_elem_x: int,
|
|
18
|
+
n_elem_y: int) -> tuple[np.ndarray,np.ndarray]:
|
|
19
|
+
"""Creates the nodal coordinates and element connectivity table for a simple
|
|
20
|
+
2D quad mesh for a rectangular plate.
|
|
21
|
+
|
|
22
|
+
Parameters
|
|
23
|
+
----------
|
|
24
|
+
leng_x : float
|
|
25
|
+
Length of the plate in the x direction.
|
|
26
|
+
leng_y : float
|
|
27
|
+
Length of the plate in the y direction.
|
|
28
|
+
n_elem_x : int
|
|
29
|
+
Number of elements along the x axis
|
|
30
|
+
n_elem_y : int
|
|
31
|
+
Number of elements along the y axis
|
|
32
|
+
|
|
33
|
+
Returns
|
|
34
|
+
-------
|
|
35
|
+
tuple[np.ndarray,np.ndarray]
|
|
36
|
+
The coordinates and connectivity table as numpy arrays. The coordinates
|
|
37
|
+
have shape=(n_nodes,coord[x,y,z]). The connectivity tables has shape=
|
|
38
|
+
(nodes_per_elem,num_elems).
|
|
39
|
+
"""
|
|
40
|
+
n_elems = n_elem_x*n_elem_y
|
|
41
|
+
n_node_x = n_elem_x+1
|
|
42
|
+
n_node_y = n_elem_y+1
|
|
43
|
+
nodes_per_elem = 4
|
|
44
|
+
|
|
45
|
+
coord_x = np.linspace(0,leng_x,n_node_x)
|
|
46
|
+
coord_y = np.linspace(0,leng_y,n_node_y)
|
|
47
|
+
(coord_grid_x,coord_grid_y) = np.meshgrid(coord_x,coord_y)
|
|
48
|
+
|
|
49
|
+
coord_x = np.atleast_2d(coord_grid_x.flatten()).T
|
|
50
|
+
coord_y = np.atleast_2d(coord_grid_y.flatten()).T
|
|
51
|
+
coord_z = np.zeros_like(coord_x)
|
|
52
|
+
coords = np.hstack((coord_x,coord_y,coord_z))
|
|
53
|
+
|
|
54
|
+
connect = np.zeros((n_elems,nodes_per_elem)).astype(np.int64)
|
|
55
|
+
row = 1
|
|
56
|
+
nn = 0
|
|
57
|
+
for ee in range(n_elems):
|
|
58
|
+
nn += 1
|
|
59
|
+
if nn >= row*n_node_x:
|
|
60
|
+
row += 1
|
|
61
|
+
nn += 1
|
|
62
|
+
|
|
63
|
+
connect[ee,:] = np.array([nn,nn+1,nn+n_node_x+1,nn+n_node_x])
|
|
64
|
+
connect = connect.T
|
|
65
|
+
|
|
66
|
+
return (coords,connect)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def fill_dims_2d(coord_x: np.ndarray,
|
|
70
|
+
coord_y: np.ndarray,
|
|
71
|
+
time: np.ndarray) -> tuple[np.ndarray,np.ndarray,np.ndarray]:
|
|
72
|
+
"""Helper function to generate 2D filled arrays tih consistent dimensions
|
|
73
|
+
for array based maths operations. Takes 1D input vectors for the x, y and
|
|
74
|
+
time dimensions and returns 2D arrays with shape=(num_coords,num_timesteps).
|
|
75
|
+
Useful for evaluating analytical functions in space and time.
|
|
76
|
+
|
|
77
|
+
Parameters
|
|
78
|
+
----------
|
|
79
|
+
coord_x : np.ndarray
|
|
80
|
+
1D flattened coordinate list for the x axis.
|
|
81
|
+
coord_y : np.ndarray
|
|
82
|
+
1D flattened coordinate list for the y axis.
|
|
83
|
+
time : np.ndarray
|
|
84
|
+
1D array of time steps.
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
Returns
|
|
88
|
+
-------
|
|
89
|
+
tuple[np.ndarray,np.ndarray,np.ndarray]
|
|
90
|
+
Filled 2D arrays with shape=(num_coords,num_timesteps) for the x, y and
|
|
91
|
+
time parameters respectively.
|
|
92
|
+
"""
|
|
93
|
+
full_x = np.repeat(np.atleast_2d(coord_x).T,
|
|
94
|
+
time.shape[0],
|
|
95
|
+
axis=1)
|
|
96
|
+
full_y = np.repeat(np.atleast_2d(coord_y).T,
|
|
97
|
+
time.shape[0],
|
|
98
|
+
axis=1)
|
|
99
|
+
full_time = np.repeat(np.atleast_2d(time),
|
|
100
|
+
coord_x.shape[0],
|
|
101
|
+
axis=0)
|
|
102
|
+
return (full_x,full_y,full_time)
|
|
@@ -1,20 +1,32 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# pyvale: the python validation engine
|
|
3
|
+
# License: MIT
|
|
4
|
+
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
# ==============================================================================
|
|
6
|
+
|
|
1
7
|
"""
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
License: MIT
|
|
5
|
-
Copyright (C) 2025 The Computer Aided Validation Team
|
|
6
|
-
================================================================================
|
|
8
|
+
Helper functions and mini factory for building standard test meshes with
|
|
9
|
+
analytic functions for the physical fields.
|
|
7
10
|
"""
|
|
11
|
+
|
|
8
12
|
import numpy as np
|
|
9
13
|
import sympy
|
|
10
14
|
import mooseherder as mh
|
|
11
|
-
from pyvale.
|
|
12
|
-
|
|
15
|
+
from pyvale.analyticsimdatagenerator import (AnalyticData2D,
|
|
16
|
+
AnalyticSimDataGen)
|
|
17
|
+
|
|
13
18
|
|
|
14
|
-
|
|
19
|
+
def standard_case_2d() -> AnalyticData2D:
|
|
20
|
+
"""Created the standard 2D analytic test case which is a plate with
|
|
21
|
+
dimensions 10x7.5 (x,y), number of elements 40x30 (x,y), and time steps of
|
|
22
|
+
0 to 10 in increments of 1.
|
|
15
23
|
|
|
16
|
-
|
|
17
|
-
|
|
24
|
+
Returns
|
|
25
|
+
-------
|
|
26
|
+
AnalyticCaseData2D
|
|
27
|
+
_description_
|
|
28
|
+
"""
|
|
29
|
+
case_data = AnalyticData2D()
|
|
18
30
|
case_data.length_x = 10.0
|
|
19
31
|
case_data.length_y = 7.5
|
|
20
32
|
n_elem_mult = 10
|
|
@@ -25,10 +37,20 @@ def standard_case_2d() -> AnalyticCaseData2D:
|
|
|
25
37
|
|
|
26
38
|
|
|
27
39
|
class AnalyticCaseFactory:
|
|
40
|
+
"""Namespace for function used to build pre-defined 2D meshes and fields
|
|
41
|
+
based on analytic functions for testing the sensor simulation functionality
|
|
42
|
+
of pyvale.
|
|
43
|
+
"""
|
|
28
44
|
|
|
29
45
|
@staticmethod
|
|
30
|
-
def scalar_linear_2d() -> tuple[mh.SimData,
|
|
31
|
-
|
|
46
|
+
def scalar_linear_2d() -> tuple[mh.SimData,AnalyticSimDataGen]:
|
|
47
|
+
"""_summary_
|
|
48
|
+
|
|
49
|
+
Returns
|
|
50
|
+
-------
|
|
51
|
+
tuple[mh.SimData,AnalyticSimDataGenerator]
|
|
52
|
+
_description_
|
|
53
|
+
"""
|
|
32
54
|
case_data = standard_case_2d()
|
|
33
55
|
(sym_y,sym_x,sym_t) = sympy.symbols("y,x,t")
|
|
34
56
|
case_data.funcs_x = (20.0/case_data.length_x * sym_x,)
|
|
@@ -37,22 +59,28 @@ class AnalyticCaseFactory:
|
|
|
37
59
|
case_data.offsets_space = (20.0,)
|
|
38
60
|
case_data.offsets_time = (0.0,)
|
|
39
61
|
|
|
40
|
-
data_gen =
|
|
62
|
+
data_gen = AnalyticSimDataGen(case_data)
|
|
41
63
|
|
|
42
64
|
sim_data = data_gen.generate_sim_data()
|
|
43
65
|
|
|
44
66
|
return (sim_data,data_gen)
|
|
45
67
|
|
|
46
68
|
@staticmethod
|
|
47
|
-
def scalar_quadratic_2d() -> tuple[mh.SimData,
|
|
48
|
-
|
|
69
|
+
def scalar_quadratic_2d() -> tuple[mh.SimData,AnalyticSimDataGen]:
|
|
70
|
+
"""_summary_
|
|
71
|
+
|
|
72
|
+
Returns
|
|
73
|
+
-------
|
|
74
|
+
tuple[mh.SimData,AnalyticSimDataGenerator]
|
|
75
|
+
_description_
|
|
76
|
+
"""
|
|
49
77
|
case_data = standard_case_2d()
|
|
50
78
|
(sym_y,sym_x,sym_t) = sympy.symbols("y,x,t")
|
|
51
79
|
case_data.funcs_x = (sym_x*(sym_x - case_data.length_x),)
|
|
52
80
|
case_data.funcs_y = (sym_y*(sym_y - case_data.length_y),)
|
|
53
81
|
case_data.funcs_t = (sym_t,)
|
|
54
82
|
|
|
55
|
-
data_gen =
|
|
83
|
+
data_gen = AnalyticSimDataGen(case_data)
|
|
56
84
|
|
|
57
85
|
sim_data = data_gen.generate_sim_data()
|
|
58
86
|
|