pyvale 2025.5.3__cp311-cp311-macosx_14_0_arm64.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 (175) hide show
  1. pyvale/.dylibs/libomp.dylib +0 -0
  2. pyvale/__init__.py +89 -0
  3. pyvale/analyticmeshgen.py +102 -0
  4. pyvale/analyticsimdatafactory.py +91 -0
  5. pyvale/analyticsimdatagenerator.py +323 -0
  6. pyvale/blendercalibrationdata.py +15 -0
  7. pyvale/blenderlightdata.py +26 -0
  8. pyvale/blendermaterialdata.py +15 -0
  9. pyvale/blenderrenderdata.py +30 -0
  10. pyvale/blenderscene.py +488 -0
  11. pyvale/blendertools.py +420 -0
  12. pyvale/camera.py +146 -0
  13. pyvale/cameradata.py +69 -0
  14. pyvale/cameradata2d.py +84 -0
  15. pyvale/camerastereo.py +217 -0
  16. pyvale/cameratools.py +522 -0
  17. pyvale/cython/rastercyth.c +32211 -0
  18. pyvale/cython/rastercyth.cpython-311-darwin.so +0 -0
  19. pyvale/cython/rastercyth.py +640 -0
  20. pyvale/data/__init__.py +5 -0
  21. pyvale/data/cal_target.tiff +0 -0
  22. pyvale/data/case00_HEX20_out.e +0 -0
  23. pyvale/data/case00_HEX27_out.e +0 -0
  24. pyvale/data/case00_HEX8_out.e +0 -0
  25. pyvale/data/case00_TET10_out.e +0 -0
  26. pyvale/data/case00_TET14_out.e +0 -0
  27. pyvale/data/case00_TET4_out.e +0 -0
  28. pyvale/data/case13_out.e +0 -0
  29. pyvale/data/case16_out.e +0 -0
  30. pyvale/data/case17_out.e +0 -0
  31. pyvale/data/case18_1_out.e +0 -0
  32. pyvale/data/case18_2_out.e +0 -0
  33. pyvale/data/case18_3_out.e +0 -0
  34. pyvale/data/case25_out.e +0 -0
  35. pyvale/data/case26_out.e +0 -0
  36. pyvale/data/optspeckle_2464x2056px_spec5px_8bit_gblur1px.tiff +0 -0
  37. pyvale/dataset.py +325 -0
  38. pyvale/errorcalculator.py +109 -0
  39. pyvale/errordriftcalc.py +146 -0
  40. pyvale/errorintegrator.py +336 -0
  41. pyvale/errorrand.py +607 -0
  42. pyvale/errorsyscalib.py +134 -0
  43. pyvale/errorsysdep.py +327 -0
  44. pyvale/errorsysfield.py +414 -0
  45. pyvale/errorsysindep.py +808 -0
  46. pyvale/examples/__init__.py +5 -0
  47. pyvale/examples/basics/ex1_1_basicscalars_therm2d.py +131 -0
  48. pyvale/examples/basics/ex1_2_sensormodel_therm2d.py +158 -0
  49. pyvale/examples/basics/ex1_3_customsens_therm3d.py +216 -0
  50. pyvale/examples/basics/ex1_4_basicerrors_therm3d.py +153 -0
  51. pyvale/examples/basics/ex1_5_fielderrs_therm3d.py +168 -0
  52. pyvale/examples/basics/ex1_6_caliberrs_therm2d.py +133 -0
  53. pyvale/examples/basics/ex1_7_spatavg_therm2d.py +123 -0
  54. pyvale/examples/basics/ex2_1_basicvectors_disp2d.py +112 -0
  55. pyvale/examples/basics/ex2_2_vectorsens_disp2d.py +111 -0
  56. pyvale/examples/basics/ex2_3_sensangle_disp2d.py +139 -0
  57. pyvale/examples/basics/ex2_4_chainfielderrs_disp2d.py +196 -0
  58. pyvale/examples/basics/ex2_5_vectorfields3d_disp3d.py +109 -0
  59. pyvale/examples/basics/ex3_1_basictensors_strain2d.py +114 -0
  60. pyvale/examples/basics/ex3_2_tensorsens2d_strain2d.py +111 -0
  61. pyvale/examples/basics/ex3_3_tensorsens3d_strain3d.py +182 -0
  62. pyvale/examples/basics/ex4_1_expsim2d_thermmech2d.py +171 -0
  63. pyvale/examples/basics/ex4_2_expsim3d_thermmech3d.py +252 -0
  64. pyvale/examples/genanalyticdata/ex1_1_scalarvisualisation.py +35 -0
  65. pyvale/examples/genanalyticdata/ex1_2_scalarcasebuild.py +43 -0
  66. pyvale/examples/genanalyticdata/ex2_1_analyticsensors.py +80 -0
  67. pyvale/examples/imagedef2d/ex_imagedef2d_todisk.py +79 -0
  68. pyvale/examples/renderblender/ex1_1_blenderscene.py +121 -0
  69. pyvale/examples/renderblender/ex1_2_blenderdeformed.py +119 -0
  70. pyvale/examples/renderblender/ex2_1_stereoscene.py +128 -0
  71. pyvale/examples/renderblender/ex2_2_stereodeformed.py +131 -0
  72. pyvale/examples/renderblender/ex3_1_blendercalibration.py +120 -0
  73. pyvale/examples/renderrasterisation/ex_rastenp.py +153 -0
  74. pyvale/examples/renderrasterisation/ex_rastercyth_oneframe.py +218 -0
  75. pyvale/examples/renderrasterisation/ex_rastercyth_static_cypara.py +187 -0
  76. pyvale/examples/renderrasterisation/ex_rastercyth_static_pypara.py +190 -0
  77. pyvale/examples/visualisation/ex1_1_plot_traces.py +102 -0
  78. pyvale/examples/visualisation/ex2_1_animate_sim.py +89 -0
  79. pyvale/experimentsimulator.py +175 -0
  80. pyvale/field.py +128 -0
  81. pyvale/fieldconverter.py +351 -0
  82. pyvale/fieldsampler.py +111 -0
  83. pyvale/fieldscalar.py +166 -0
  84. pyvale/fieldtensor.py +218 -0
  85. pyvale/fieldtransform.py +388 -0
  86. pyvale/fieldvector.py +213 -0
  87. pyvale/generatorsrandom.py +505 -0
  88. pyvale/imagedef2d.py +569 -0
  89. pyvale/integratorfactory.py +240 -0
  90. pyvale/integratorquadrature.py +217 -0
  91. pyvale/integratorrectangle.py +165 -0
  92. pyvale/integratorspatial.py +89 -0
  93. pyvale/integratortype.py +43 -0
  94. pyvale/output.py +17 -0
  95. pyvale/pyvaleexceptions.py +11 -0
  96. pyvale/raster.py +31 -0
  97. pyvale/rastercy.py +77 -0
  98. pyvale/rasternp.py +603 -0
  99. pyvale/rendermesh.py +147 -0
  100. pyvale/sensorarray.py +178 -0
  101. pyvale/sensorarrayfactory.py +196 -0
  102. pyvale/sensorarraypoint.py +278 -0
  103. pyvale/sensordata.py +71 -0
  104. pyvale/sensordescriptor.py +213 -0
  105. pyvale/sensortools.py +142 -0
  106. pyvale/simcases/case00_HEX20.i +242 -0
  107. pyvale/simcases/case00_HEX27.i +242 -0
  108. pyvale/simcases/case00_HEX8.i +242 -0
  109. pyvale/simcases/case00_TET10.i +242 -0
  110. pyvale/simcases/case00_TET14.i +242 -0
  111. pyvale/simcases/case00_TET4.i +242 -0
  112. pyvale/simcases/case01.i +101 -0
  113. pyvale/simcases/case02.i +156 -0
  114. pyvale/simcases/case03.i +136 -0
  115. pyvale/simcases/case04.i +181 -0
  116. pyvale/simcases/case05.i +234 -0
  117. pyvale/simcases/case06.i +305 -0
  118. pyvale/simcases/case07.geo +135 -0
  119. pyvale/simcases/case07.i +87 -0
  120. pyvale/simcases/case08.geo +144 -0
  121. pyvale/simcases/case08.i +153 -0
  122. pyvale/simcases/case09.geo +204 -0
  123. pyvale/simcases/case09.i +87 -0
  124. pyvale/simcases/case10.geo +204 -0
  125. pyvale/simcases/case10.i +257 -0
  126. pyvale/simcases/case11.geo +337 -0
  127. pyvale/simcases/case11.i +147 -0
  128. pyvale/simcases/case12.geo +388 -0
  129. pyvale/simcases/case12.i +329 -0
  130. pyvale/simcases/case13.i +140 -0
  131. pyvale/simcases/case14.i +159 -0
  132. pyvale/simcases/case15.geo +337 -0
  133. pyvale/simcases/case15.i +150 -0
  134. pyvale/simcases/case16.geo +391 -0
  135. pyvale/simcases/case16.i +357 -0
  136. pyvale/simcases/case17.geo +135 -0
  137. pyvale/simcases/case17.i +144 -0
  138. pyvale/simcases/case18.i +254 -0
  139. pyvale/simcases/case18_1.i +254 -0
  140. pyvale/simcases/case18_2.i +254 -0
  141. pyvale/simcases/case18_3.i +254 -0
  142. pyvale/simcases/case19.geo +252 -0
  143. pyvale/simcases/case19.i +99 -0
  144. pyvale/simcases/case20.geo +252 -0
  145. pyvale/simcases/case20.i +250 -0
  146. pyvale/simcases/case21.geo +74 -0
  147. pyvale/simcases/case21.i +155 -0
  148. pyvale/simcases/case22.geo +82 -0
  149. pyvale/simcases/case22.i +140 -0
  150. pyvale/simcases/case23.geo +164 -0
  151. pyvale/simcases/case23.i +140 -0
  152. pyvale/simcases/case24.geo +79 -0
  153. pyvale/simcases/case24.i +123 -0
  154. pyvale/simcases/case25.geo +82 -0
  155. pyvale/simcases/case25.i +140 -0
  156. pyvale/simcases/case26.geo +166 -0
  157. pyvale/simcases/case26.i +140 -0
  158. pyvale/simcases/run_1case.py +61 -0
  159. pyvale/simcases/run_all_cases.py +69 -0
  160. pyvale/simcases/run_build_case.py +64 -0
  161. pyvale/simcases/run_example_cases.py +69 -0
  162. pyvale/simtools.py +67 -0
  163. pyvale/visualexpplotter.py +191 -0
  164. pyvale/visualimagedef.py +74 -0
  165. pyvale/visualimages.py +76 -0
  166. pyvale/visualopts.py +493 -0
  167. pyvale/visualsimanimator.py +111 -0
  168. pyvale/visualsimsensors.py +318 -0
  169. pyvale/visualtools.py +136 -0
  170. pyvale/visualtraceplotter.py +142 -0
  171. pyvale-2025.5.3.dist-info/METADATA +144 -0
  172. pyvale-2025.5.3.dist-info/RECORD +175 -0
  173. pyvale-2025.5.3.dist-info/WHEEL +6 -0
  174. pyvale-2025.5.3.dist-info/licenses/LICENSE +21 -0
  175. pyvale-2025.5.3.dist-info/top_level.txt +1 -0
@@ -0,0 +1,242 @@
1
+ #-------------------------------------------------------------------------
2
+ # pyvale: single element test 3D
3
+ #-------------------------------------------------------------------------
4
+
5
+ #-------------------------------------------------------------------------
6
+ #_* MOOSEHERDER VARIABLES - START
7
+
8
+ endTime = 20
9
+ timeStep = 1
10
+
11
+ # Geometric Properties
12
+ lengX = 10e-3 # m
13
+ lengY = 10e-3 # m
14
+ lengZ = 10e-3 # m
15
+
16
+ # Mesh Properties
17
+ nElemX = 2
18
+ nElemY = 2
19
+ nElemZ = 2
20
+ eType = HEX8 # TET4, TET10, TET11, HEX8, HEX20, HEX27
21
+
22
+ # Thermal BCs
23
+ coolantTemp=100.0 # degC
24
+ heatTransCoeff=125.0e3 # W.m^-2.K^-1
25
+ surfHeatFlux=4.67e6 # W.m^-2, taken from Adel's first paper
26
+ timeConst = 1 # s
27
+
28
+ # Mechanical Loads/BCs
29
+ topDispRate = ${fparse 1e-3 / endTime} # m/s
30
+
31
+ # Thermal Props:
32
+ Density = 8829.0 # kg.m^-3
33
+ ThermCond = 384.0 # W.m^-1.K^-1
34
+ SpecHeat = 406.0 # J.kg^-1.K^-1
35
+
36
+ # Material Properties:
37
+ EMod= 100e9 # Pa
38
+ PRatio = 0.33 # -
39
+
40
+ # Thermo-mechanical coupling
41
+ stressFreeTemp = 20 # degC
42
+ ThermExp = 17.8e-6 # 1/degC
43
+
44
+ #** MOOSEHERDER VARIABLES - END
45
+ #-------------------------------------------------------------------------
46
+
47
+ [GlobalParams]
48
+ displacements = 'disp_x disp_y disp_z'
49
+ []
50
+
51
+ [Mesh]
52
+ [generated]
53
+ type = GeneratedMeshGenerator
54
+ dim = 3
55
+ nx = ${nElemX}
56
+ ny = ${nElemY}
57
+ nz = ${nElemZ}
58
+ xmax = ${lengX}
59
+ ymax = ${lengY}
60
+ zmax = ${lengZ}
61
+ elem_type = ${eType}
62
+ []
63
+ []
64
+
65
+ [Variables]
66
+ [temperature]
67
+ family = LAGRANGE
68
+ order = FIRST
69
+ initial_condition = ${coolantTemp}
70
+ []
71
+ []
72
+
73
+ [Kernels]
74
+ [heat_conduction]
75
+ type = HeatConduction
76
+ variable = temperature
77
+ []
78
+ [time_derivative]
79
+ type = HeatConductionTimeDerivative
80
+ variable = temperature
81
+ []
82
+ []
83
+
84
+
85
+ [Physics/SolidMechanics/QuasiStatic]
86
+ [all]
87
+ strain = SMALL
88
+ incremental = true
89
+ add_variables = true
90
+ material_output_family = MONOMIAL # MONOMIAL, LAGRANGE
91
+ material_output_order = FIRST # CONSTANT, FIRST, SECOND,
92
+ generate_output = 'strain_xx strain_yy strain_zz strain_xy strain_yz strain_xz'
93
+ []
94
+ []
95
+
96
+ [BCs]
97
+ [heat_flux_in]
98
+ type = FunctionNeumannBC
99
+ variable = temperature
100
+ boundary = 'top'
101
+ function = '${fparse surfHeatFlux}*(1-exp(-(1/${timeConst})*t))'
102
+ []
103
+ [heat_flux_out]
104
+ type = ConvectiveHeatFluxBC
105
+ variable = temperature
106
+ boundary = 'bottom'
107
+ T_infinity = ${coolantTemp}
108
+ heat_transfer_coefficient = ${heatTransCoeff}
109
+ []
110
+
111
+ [bottom_x]
112
+ type = DirichletBC
113
+ variable = disp_x
114
+ boundary = 'bottom'
115
+ value = 0.0
116
+ []
117
+ [bottom_y]
118
+ type = DirichletBC
119
+ variable = disp_y
120
+ boundary = 'bottom'
121
+ value = 0.0
122
+ []
123
+ [bottom_z]
124
+ type = DirichletBC
125
+ variable = disp_z
126
+ boundary = 'bottom'
127
+ value = 0.0
128
+ []
129
+ [top_x]
130
+ type = DirichletBC
131
+ variable = disp_x
132
+ boundary = 'top'
133
+ value = 0.0
134
+ []
135
+ [top_y]
136
+ type = FunctionDirichletBC
137
+ variable = disp_y
138
+ boundary = 'top'
139
+ function = '${topDispRate}*t'
140
+ []
141
+ [top_z]
142
+ type = DirichletBC
143
+ variable = disp_z
144
+ boundary = 'top'
145
+ value = 0.0
146
+ []
147
+ []
148
+
149
+ [Materials]
150
+ [mat_thermal]
151
+ type = HeatConductionMaterial
152
+ thermal_conductivity = ${ThermCond}
153
+ specific_heat = ${SpecHeat}
154
+ []
155
+ [mat_density]
156
+ type = GenericConstantMaterial
157
+ prop_names = 'density'
158
+ prop_values = ${Density}
159
+ []
160
+ [mat_expansion]
161
+ type = ComputeThermalExpansionEigenstrain
162
+ temperature = temperature
163
+ stress_free_temperature = ${stressFreeTemp}
164
+ thermal_expansion_coeff = ${ThermExp}
165
+ eigenstrain_name = thermal_expansion_eigenstrain
166
+ []
167
+
168
+ [mat_elasticity]
169
+ type = ComputeIsotropicElasticityTensor
170
+ youngs_modulus = ${EMod}
171
+ poissons_ratio = ${PRatio}
172
+ []
173
+ [stress]
174
+ type = ComputeFiniteStrainElasticStress
175
+ []
176
+ []
177
+
178
+ [Preconditioning]
179
+ [SMP]
180
+ type = SMP
181
+ full = true
182
+ []
183
+ []
184
+
185
+ [Executioner]
186
+ type = Transient
187
+
188
+ solve_type = 'NEWTON'
189
+ petsc_options = '-snes_converged_reason'
190
+ petsc_options_iname = '-pc_type -pc_hypre_type'
191
+ petsc_options_value = 'hypre boomeramg'
192
+
193
+ l_max_its = 1000
194
+ l_tol = 1e-6
195
+
196
+ nl_max_its = 50
197
+ nl_rel_tol = 1e-6
198
+ nl_abs_tol = 1e-6
199
+
200
+ start_time=0.0
201
+ end_time = ${endTime}
202
+ dt = ${timeStep}
203
+
204
+ [Predictor]
205
+ type = SimplePredictor
206
+ scale = 1
207
+ []
208
+ []
209
+
210
+
211
+ [Postprocessors]
212
+ [react_y_bot]
213
+ type = SidesetReaction
214
+ direction = '0 1 0'
215
+ stress_tensor = stress
216
+ boundary = 'bottom'
217
+ []
218
+ [react_y_top]
219
+ type = SidesetReaction
220
+ direction = '0 1 0'
221
+ stress_tensor = stress
222
+ boundary = 'top'
223
+ []
224
+
225
+ [disp_y_max]
226
+ type = NodalExtremeValue
227
+ variable = disp_y
228
+ []
229
+ [disp_x_max]
230
+ type = NodalExtremeValue
231
+ variable = disp_x
232
+ []
233
+ [disp_z_max]
234
+ type = NodalExtremeValue
235
+ variable = disp_z
236
+ []
237
+
238
+ []
239
+
240
+ [Outputs]
241
+ exodus = true
242
+ []
@@ -0,0 +1,242 @@
1
+ #-------------------------------------------------------------------------
2
+ # pyvale: single element test 3D
3
+ #-------------------------------------------------------------------------
4
+
5
+ #-------------------------------------------------------------------------
6
+ #_* MOOSEHERDER VARIABLES - START
7
+
8
+ endTime = 20
9
+ timeStep = 1
10
+
11
+ # Geometric Properties
12
+ lengX = 10e-3 # m
13
+ lengY = 10e-3 # m
14
+ lengZ = 10e-3 # m
15
+
16
+ # Mesh Properties
17
+ nElemX = 1
18
+ nElemY = 1
19
+ nElemZ = 1
20
+ eType = TET10 # TET10, TET11, HEX20, HEX27
21
+
22
+ # Thermal BCs
23
+ coolantTemp=100.0 # degC
24
+ heatTransCoeff=125.0e3 # W.m^-2.K^-1
25
+ surfHeatFlux=4.67e6 # W.m^-2, taken from Adel's first paper
26
+ timeConst = 1 # s
27
+
28
+ # Mechanical Loads/BCs
29
+ topDispRate = ${fparse 1e-3 / endTime} # m/s
30
+
31
+ # Thermal Props:
32
+ Density = 8829.0 # kg.m^-3
33
+ ThermCond = 384.0 # W.m^-1.K^-1
34
+ SpecHeat = 406.0 # J.kg^-1.K^-1
35
+
36
+ # Material Properties:
37
+ EMod= 100e9 # Pa
38
+ PRatio = 0.33 # -
39
+
40
+ # Thermo-mechanical coupling
41
+ stressFreeTemp = 20 # degC
42
+ ThermExp = 17.8e-6 # 1/degC
43
+
44
+ #** MOOSEHERDER VARIABLES - END
45
+ #-------------------------------------------------------------------------
46
+
47
+ [GlobalParams]
48
+ displacements = 'disp_x disp_y disp_z'
49
+ []
50
+
51
+ [Mesh]
52
+ [generated]
53
+ type = GeneratedMeshGenerator
54
+ dim = 3
55
+ nx = ${nElemX}
56
+ ny = ${nElemY}
57
+ nz = ${nElemZ}
58
+ xmax = ${lengX}
59
+ ymax = ${lengY}
60
+ zmax = ${lengZ}
61
+ elem_type = ${eType}
62
+ []
63
+ []
64
+
65
+ [Variables]
66
+ [temperature]
67
+ family = LAGRANGE
68
+ order = SECOND
69
+ initial_condition = ${coolantTemp}
70
+ []
71
+ []
72
+
73
+ [Kernels]
74
+ [heat_conduction]
75
+ type = HeatConduction
76
+ variable = temperature
77
+ []
78
+ [time_derivative]
79
+ type = HeatConductionTimeDerivative
80
+ variable = temperature
81
+ []
82
+ []
83
+
84
+
85
+ [Physics/SolidMechanics/QuasiStatic]
86
+ [all]
87
+ strain = SMALL
88
+ incremental = true
89
+ add_variables = true
90
+ material_output_family = MONOMIAL # MONOMIAL, LAGRANGE
91
+ material_output_order = FIRST # CONSTANT, FIRST, SECOND,
92
+ generate_output = 'strain_xx strain_yy strain_zz strain_xy strain_yz strain_xz'
93
+ []
94
+ []
95
+
96
+ [BCs]
97
+ [heat_flux_in]
98
+ type = FunctionNeumannBC
99
+ variable = temperature
100
+ boundary = 'top'
101
+ function = '${fparse surfHeatFlux}*(1-exp(-(1/${timeConst})*t))'
102
+ []
103
+ [heat_flux_out]
104
+ type = ConvectiveHeatFluxBC
105
+ variable = temperature
106
+ boundary = 'bottom'
107
+ T_infinity = ${coolantTemp}
108
+ heat_transfer_coefficient = ${heatTransCoeff}
109
+ []
110
+
111
+ [bottom_x]
112
+ type = DirichletBC
113
+ variable = disp_x
114
+ boundary = 'bottom'
115
+ value = 0.0
116
+ []
117
+ [bottom_y]
118
+ type = DirichletBC
119
+ variable = disp_y
120
+ boundary = 'bottom'
121
+ value = 0.0
122
+ []
123
+ [bottom_z]
124
+ type = DirichletBC
125
+ variable = disp_z
126
+ boundary = 'bottom'
127
+ value = 0.0
128
+ []
129
+ [top_x]
130
+ type = DirichletBC
131
+ variable = disp_x
132
+ boundary = 'top'
133
+ value = 0.0
134
+ []
135
+ [top_y]
136
+ type = FunctionDirichletBC
137
+ variable = disp_y
138
+ boundary = 'top'
139
+ function = '${topDispRate}*t'
140
+ []
141
+ [top_z]
142
+ type = DirichletBC
143
+ variable = disp_z
144
+ boundary = 'top'
145
+ value = 0.0
146
+ []
147
+ []
148
+
149
+ [Materials]
150
+ [mat_thermal]
151
+ type = HeatConductionMaterial
152
+ thermal_conductivity = ${ThermCond}
153
+ specific_heat = ${SpecHeat}
154
+ []
155
+ [mat_density]
156
+ type = GenericConstantMaterial
157
+ prop_names = 'density'
158
+ prop_values = ${Density}
159
+ []
160
+ [mat_expansion]
161
+ type = ComputeThermalExpansionEigenstrain
162
+ temperature = temperature
163
+ stress_free_temperature = ${stressFreeTemp}
164
+ thermal_expansion_coeff = ${ThermExp}
165
+ eigenstrain_name = thermal_expansion_eigenstrain
166
+ []
167
+
168
+ [mat_elasticity]
169
+ type = ComputeIsotropicElasticityTensor
170
+ youngs_modulus = ${EMod}
171
+ poissons_ratio = ${PRatio}
172
+ []
173
+ [stress]
174
+ type = ComputeFiniteStrainElasticStress
175
+ []
176
+ []
177
+
178
+ [Preconditioning]
179
+ [SMP]
180
+ type = SMP
181
+ full = true
182
+ []
183
+ []
184
+
185
+ [Executioner]
186
+ type = Transient
187
+
188
+ solve_type = 'NEWTON'
189
+ petsc_options = '-snes_converged_reason'
190
+ petsc_options_iname = '-pc_type -pc_hypre_type'
191
+ petsc_options_value = 'hypre boomeramg'
192
+
193
+ l_max_its = 1000
194
+ l_tol = 1e-6
195
+
196
+ nl_max_its = 50
197
+ nl_rel_tol = 1e-6
198
+ nl_abs_tol = 1e-6
199
+
200
+ start_time=0.0
201
+ end_time = ${endTime}
202
+ dt = ${timeStep}
203
+
204
+ [Predictor]
205
+ type = SimplePredictor
206
+ scale = 1
207
+ []
208
+ []
209
+
210
+
211
+ [Postprocessors]
212
+ [react_y_bot]
213
+ type = SidesetReaction
214
+ direction = '0 1 0'
215
+ stress_tensor = stress
216
+ boundary = 'bottom'
217
+ []
218
+ [react_y_top]
219
+ type = SidesetReaction
220
+ direction = '0 1 0'
221
+ stress_tensor = stress
222
+ boundary = 'top'
223
+ []
224
+
225
+ [disp_y_max]
226
+ type = NodalExtremeValue
227
+ variable = disp_y
228
+ []
229
+ [disp_x_max]
230
+ type = NodalExtremeValue
231
+ variable = disp_x
232
+ []
233
+ [disp_z_max]
234
+ type = NodalExtremeValue
235
+ variable = disp_z
236
+ []
237
+
238
+ []
239
+
240
+ [Outputs]
241
+ exodus = true
242
+ []
@@ -0,0 +1,242 @@
1
+ #-------------------------------------------------------------------------
2
+ # pyvale: single element test 3D
3
+ #-------------------------------------------------------------------------
4
+
5
+ #-------------------------------------------------------------------------
6
+ #_* MOOSEHERDER VARIABLES - START
7
+
8
+ endTime = 20
9
+ timeStep = 1
10
+
11
+ # Geometric Properties
12
+ lengX = 10e-3 # m
13
+ lengY = 10e-3 # m
14
+ lengZ = 10e-3 # m
15
+
16
+ # Mesh Properties
17
+ nElemX = 1
18
+ nElemY = 1
19
+ nElemZ = 1
20
+ eType = TET14 # TET10, TET11, HEX20, HEX27
21
+
22
+ # Thermal BCs
23
+ coolantTemp=100.0 # degC
24
+ heatTransCoeff=125.0e3 # W.m^-2.K^-1
25
+ surfHeatFlux=4.67e6 # W.m^-2, taken from Adel's first paper
26
+ timeConst = 1 # s
27
+
28
+ # Mechanical Loads/BCs
29
+ topDispRate = ${fparse 1e-3 / endTime} # m/s
30
+
31
+ # Thermal Props:
32
+ Density = 8829.0 # kg.m^-3
33
+ ThermCond = 384.0 # W.m^-1.K^-1
34
+ SpecHeat = 406.0 # J.kg^-1.K^-1
35
+
36
+ # Material Properties:
37
+ EMod= 100e9 # Pa
38
+ PRatio = 0.33 # -
39
+
40
+ # Thermo-mechanical coupling
41
+ stressFreeTemp = 20 # degC
42
+ ThermExp = 17.8e-6 # 1/degC
43
+
44
+ #** MOOSEHERDER VARIABLES - END
45
+ #-------------------------------------------------------------------------
46
+
47
+ [GlobalParams]
48
+ displacements = 'disp_x disp_y disp_z'
49
+ []
50
+
51
+ [Mesh]
52
+ [generated]
53
+ type = GeneratedMeshGenerator
54
+ dim = 3
55
+ nx = ${nElemX}
56
+ ny = ${nElemY}
57
+ nz = ${nElemZ}
58
+ xmax = ${lengX}
59
+ ymax = ${lengY}
60
+ zmax = ${lengZ}
61
+ elem_type = ${eType}
62
+ []
63
+ []
64
+
65
+ [Variables]
66
+ [temperature]
67
+ family = LAGRANGE
68
+ order = SECOND
69
+ initial_condition = ${coolantTemp}
70
+ []
71
+ []
72
+
73
+ [Kernels]
74
+ [heat_conduction]
75
+ type = HeatConduction
76
+ variable = temperature
77
+ []
78
+ [time_derivative]
79
+ type = HeatConductionTimeDerivative
80
+ variable = temperature
81
+ []
82
+ []
83
+
84
+
85
+ [Physics/SolidMechanics/QuasiStatic]
86
+ [all]
87
+ strain = SMALL
88
+ incremental = true
89
+ add_variables = true
90
+ material_output_family = MONOMIAL # MONOMIAL, LAGRANGE
91
+ material_output_order = FIRST # CONSTANT, FIRST, SECOND,
92
+ generate_output = 'strain_xx strain_yy strain_zz strain_xy strain_yz strain_xz'
93
+ []
94
+ []
95
+
96
+ [BCs]
97
+ [heat_flux_in]
98
+ type = FunctionNeumannBC
99
+ variable = temperature
100
+ boundary = 'top'
101
+ function = '${fparse surfHeatFlux}*(1-exp(-(1/${timeConst})*t))'
102
+ []
103
+ [heat_flux_out]
104
+ type = ConvectiveHeatFluxBC
105
+ variable = temperature
106
+ boundary = 'bottom'
107
+ T_infinity = ${coolantTemp}
108
+ heat_transfer_coefficient = ${heatTransCoeff}
109
+ []
110
+
111
+ [bottom_x]
112
+ type = DirichletBC
113
+ variable = disp_x
114
+ boundary = 'bottom'
115
+ value = 0.0
116
+ []
117
+ [bottom_y]
118
+ type = DirichletBC
119
+ variable = disp_y
120
+ boundary = 'bottom'
121
+ value = 0.0
122
+ []
123
+ [bottom_z]
124
+ type = DirichletBC
125
+ variable = disp_z
126
+ boundary = 'bottom'
127
+ value = 0.0
128
+ []
129
+ [top_x]
130
+ type = DirichletBC
131
+ variable = disp_x
132
+ boundary = 'top'
133
+ value = 0.0
134
+ []
135
+ [top_y]
136
+ type = FunctionDirichletBC
137
+ variable = disp_y
138
+ boundary = 'top'
139
+ function = '${topDispRate}*t'
140
+ []
141
+ [top_z]
142
+ type = DirichletBC
143
+ variable = disp_z
144
+ boundary = 'top'
145
+ value = 0.0
146
+ []
147
+ []
148
+
149
+ [Materials]
150
+ [mat_thermal]
151
+ type = HeatConductionMaterial
152
+ thermal_conductivity = ${ThermCond}
153
+ specific_heat = ${SpecHeat}
154
+ []
155
+ [mat_density]
156
+ type = GenericConstantMaterial
157
+ prop_names = 'density'
158
+ prop_values = ${Density}
159
+ []
160
+ [mat_expansion]
161
+ type = ComputeThermalExpansionEigenstrain
162
+ temperature = temperature
163
+ stress_free_temperature = ${stressFreeTemp}
164
+ thermal_expansion_coeff = ${ThermExp}
165
+ eigenstrain_name = thermal_expansion_eigenstrain
166
+ []
167
+
168
+ [mat_elasticity]
169
+ type = ComputeIsotropicElasticityTensor
170
+ youngs_modulus = ${EMod}
171
+ poissons_ratio = ${PRatio}
172
+ []
173
+ [stress]
174
+ type = ComputeFiniteStrainElasticStress
175
+ []
176
+ []
177
+
178
+ [Preconditioning]
179
+ [SMP]
180
+ type = SMP
181
+ full = true
182
+ []
183
+ []
184
+
185
+ [Executioner]
186
+ type = Transient
187
+
188
+ solve_type = 'NEWTON'
189
+ petsc_options = '-snes_converged_reason'
190
+ petsc_options_iname = '-pc_type -pc_hypre_type'
191
+ petsc_options_value = 'hypre boomeramg'
192
+
193
+ l_max_its = 1000
194
+ l_tol = 1e-6
195
+
196
+ nl_max_its = 50
197
+ nl_rel_tol = 1e-6
198
+ nl_abs_tol = 1e-6
199
+
200
+ start_time=0.0
201
+ end_time = ${endTime}
202
+ dt = ${timeStep}
203
+
204
+ [Predictor]
205
+ type = SimplePredictor
206
+ scale = 1
207
+ []
208
+ []
209
+
210
+
211
+ [Postprocessors]
212
+ [react_y_bot]
213
+ type = SidesetReaction
214
+ direction = '0 1 0'
215
+ stress_tensor = stress
216
+ boundary = 'bottom'
217
+ []
218
+ [react_y_top]
219
+ type = SidesetReaction
220
+ direction = '0 1 0'
221
+ stress_tensor = stress
222
+ boundary = 'top'
223
+ []
224
+
225
+ [disp_y_max]
226
+ type = NodalExtremeValue
227
+ variable = disp_y
228
+ []
229
+ [disp_x_max]
230
+ type = NodalExtremeValue
231
+ variable = disp_x
232
+ []
233
+ [disp_z_max]
234
+ type = NodalExtremeValue
235
+ variable = disp_z
236
+ []
237
+
238
+ []
239
+
240
+ [Outputs]
241
+ exodus = true
242
+ []