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