pyvale 2025.5.3__cp311-cp311-macosx_13_0_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyvale might be problematic. Click here for more details.
- pyvale/.dylibs/libomp.dylib +0 -0
- pyvale/__init__.py +89 -0
- pyvale/analyticmeshgen.py +102 -0
- pyvale/analyticsimdatafactory.py +91 -0
- pyvale/analyticsimdatagenerator.py +323 -0
- pyvale/blendercalibrationdata.py +15 -0
- pyvale/blenderlightdata.py +26 -0
- pyvale/blendermaterialdata.py +15 -0
- pyvale/blenderrenderdata.py +30 -0
- pyvale/blenderscene.py +488 -0
- pyvale/blendertools.py +420 -0
- pyvale/camera.py +146 -0
- pyvale/cameradata.py +69 -0
- pyvale/cameradata2d.py +84 -0
- pyvale/camerastereo.py +217 -0
- pyvale/cameratools.py +522 -0
- pyvale/cython/rastercyth.c +32211 -0
- pyvale/cython/rastercyth.cpython-311-darwin.so +0 -0
- pyvale/cython/rastercyth.py +640 -0
- pyvale/data/__init__.py +5 -0
- pyvale/data/cal_target.tiff +0 -0
- pyvale/data/case00_HEX20_out.e +0 -0
- pyvale/data/case00_HEX27_out.e +0 -0
- pyvale/data/case00_HEX8_out.e +0 -0
- pyvale/data/case00_TET10_out.e +0 -0
- pyvale/data/case00_TET14_out.e +0 -0
- pyvale/data/case00_TET4_out.e +0 -0
- pyvale/data/case13_out.e +0 -0
- pyvale/data/case16_out.e +0 -0
- pyvale/data/case17_out.e +0 -0
- pyvale/data/case18_1_out.e +0 -0
- pyvale/data/case18_2_out.e +0 -0
- pyvale/data/case18_3_out.e +0 -0
- pyvale/data/case25_out.e +0 -0
- pyvale/data/case26_out.e +0 -0
- pyvale/data/optspeckle_2464x2056px_spec5px_8bit_gblur1px.tiff +0 -0
- pyvale/dataset.py +325 -0
- pyvale/errorcalculator.py +109 -0
- pyvale/errordriftcalc.py +146 -0
- pyvale/errorintegrator.py +336 -0
- pyvale/errorrand.py +607 -0
- pyvale/errorsyscalib.py +134 -0
- pyvale/errorsysdep.py +327 -0
- pyvale/errorsysfield.py +414 -0
- pyvale/errorsysindep.py +808 -0
- pyvale/examples/__init__.py +5 -0
- pyvale/examples/basics/ex1_1_basicscalars_therm2d.py +131 -0
- pyvale/examples/basics/ex1_2_sensormodel_therm2d.py +158 -0
- pyvale/examples/basics/ex1_3_customsens_therm3d.py +216 -0
- pyvale/examples/basics/ex1_4_basicerrors_therm3d.py +153 -0
- pyvale/examples/basics/ex1_5_fielderrs_therm3d.py +168 -0
- pyvale/examples/basics/ex1_6_caliberrs_therm2d.py +133 -0
- pyvale/examples/basics/ex1_7_spatavg_therm2d.py +123 -0
- pyvale/examples/basics/ex2_1_basicvectors_disp2d.py +112 -0
- pyvale/examples/basics/ex2_2_vectorsens_disp2d.py +111 -0
- pyvale/examples/basics/ex2_3_sensangle_disp2d.py +139 -0
- pyvale/examples/basics/ex2_4_chainfielderrs_disp2d.py +196 -0
- pyvale/examples/basics/ex2_5_vectorfields3d_disp3d.py +109 -0
- pyvale/examples/basics/ex3_1_basictensors_strain2d.py +114 -0
- pyvale/examples/basics/ex3_2_tensorsens2d_strain2d.py +111 -0
- pyvale/examples/basics/ex3_3_tensorsens3d_strain3d.py +182 -0
- pyvale/examples/basics/ex4_1_expsim2d_thermmech2d.py +171 -0
- pyvale/examples/basics/ex4_2_expsim3d_thermmech3d.py +252 -0
- pyvale/examples/genanalyticdata/ex1_1_scalarvisualisation.py +35 -0
- pyvale/examples/genanalyticdata/ex1_2_scalarcasebuild.py +43 -0
- pyvale/examples/genanalyticdata/ex2_1_analyticsensors.py +80 -0
- pyvale/examples/imagedef2d/ex_imagedef2d_todisk.py +79 -0
- pyvale/examples/renderblender/ex1_1_blenderscene.py +121 -0
- pyvale/examples/renderblender/ex1_2_blenderdeformed.py +119 -0
- pyvale/examples/renderblender/ex2_1_stereoscene.py +128 -0
- pyvale/examples/renderblender/ex2_2_stereodeformed.py +131 -0
- pyvale/examples/renderblender/ex3_1_blendercalibration.py +120 -0
- pyvale/examples/renderrasterisation/ex_rastenp.py +153 -0
- pyvale/examples/renderrasterisation/ex_rastercyth_oneframe.py +218 -0
- pyvale/examples/renderrasterisation/ex_rastercyth_static_cypara.py +187 -0
- pyvale/examples/renderrasterisation/ex_rastercyth_static_pypara.py +190 -0
- pyvale/examples/visualisation/ex1_1_plot_traces.py +102 -0
- pyvale/examples/visualisation/ex2_1_animate_sim.py +89 -0
- pyvale/experimentsimulator.py +175 -0
- pyvale/field.py +128 -0
- pyvale/fieldconverter.py +351 -0
- pyvale/fieldsampler.py +111 -0
- pyvale/fieldscalar.py +166 -0
- pyvale/fieldtensor.py +218 -0
- pyvale/fieldtransform.py +388 -0
- pyvale/fieldvector.py +213 -0
- pyvale/generatorsrandom.py +505 -0
- pyvale/imagedef2d.py +569 -0
- pyvale/integratorfactory.py +240 -0
- pyvale/integratorquadrature.py +217 -0
- pyvale/integratorrectangle.py +165 -0
- pyvale/integratorspatial.py +89 -0
- pyvale/integratortype.py +43 -0
- pyvale/output.py +17 -0
- pyvale/pyvaleexceptions.py +11 -0
- pyvale/raster.py +31 -0
- pyvale/rastercy.py +77 -0
- pyvale/rasternp.py +603 -0
- pyvale/rendermesh.py +147 -0
- pyvale/sensorarray.py +178 -0
- pyvale/sensorarrayfactory.py +196 -0
- pyvale/sensorarraypoint.py +278 -0
- pyvale/sensordata.py +71 -0
- pyvale/sensordescriptor.py +213 -0
- pyvale/sensortools.py +142 -0
- pyvale/simcases/case00_HEX20.i +242 -0
- pyvale/simcases/case00_HEX27.i +242 -0
- pyvale/simcases/case00_HEX8.i +242 -0
- pyvale/simcases/case00_TET10.i +242 -0
- pyvale/simcases/case00_TET14.i +242 -0
- pyvale/simcases/case00_TET4.i +242 -0
- pyvale/simcases/case01.i +101 -0
- pyvale/simcases/case02.i +156 -0
- pyvale/simcases/case03.i +136 -0
- pyvale/simcases/case04.i +181 -0
- pyvale/simcases/case05.i +234 -0
- pyvale/simcases/case06.i +305 -0
- pyvale/simcases/case07.geo +135 -0
- pyvale/simcases/case07.i +87 -0
- pyvale/simcases/case08.geo +144 -0
- pyvale/simcases/case08.i +153 -0
- pyvale/simcases/case09.geo +204 -0
- pyvale/simcases/case09.i +87 -0
- pyvale/simcases/case10.geo +204 -0
- pyvale/simcases/case10.i +257 -0
- pyvale/simcases/case11.geo +337 -0
- pyvale/simcases/case11.i +147 -0
- pyvale/simcases/case12.geo +388 -0
- pyvale/simcases/case12.i +329 -0
- pyvale/simcases/case13.i +140 -0
- pyvale/simcases/case14.i +159 -0
- pyvale/simcases/case15.geo +337 -0
- pyvale/simcases/case15.i +150 -0
- pyvale/simcases/case16.geo +391 -0
- pyvale/simcases/case16.i +357 -0
- pyvale/simcases/case17.geo +135 -0
- pyvale/simcases/case17.i +144 -0
- pyvale/simcases/case18.i +254 -0
- pyvale/simcases/case18_1.i +254 -0
- pyvale/simcases/case18_2.i +254 -0
- pyvale/simcases/case18_3.i +254 -0
- pyvale/simcases/case19.geo +252 -0
- pyvale/simcases/case19.i +99 -0
- pyvale/simcases/case20.geo +252 -0
- pyvale/simcases/case20.i +250 -0
- pyvale/simcases/case21.geo +74 -0
- pyvale/simcases/case21.i +155 -0
- pyvale/simcases/case22.geo +82 -0
- pyvale/simcases/case22.i +140 -0
- pyvale/simcases/case23.geo +164 -0
- pyvale/simcases/case23.i +140 -0
- pyvale/simcases/case24.geo +79 -0
- pyvale/simcases/case24.i +123 -0
- pyvale/simcases/case25.geo +82 -0
- pyvale/simcases/case25.i +140 -0
- pyvale/simcases/case26.geo +166 -0
- pyvale/simcases/case26.i +140 -0
- pyvale/simcases/run_1case.py +61 -0
- pyvale/simcases/run_all_cases.py +69 -0
- pyvale/simcases/run_build_case.py +64 -0
- pyvale/simcases/run_example_cases.py +69 -0
- pyvale/simtools.py +67 -0
- pyvale/visualexpplotter.py +191 -0
- pyvale/visualimagedef.py +74 -0
- pyvale/visualimages.py +76 -0
- pyvale/visualopts.py +493 -0
- pyvale/visualsimanimator.py +111 -0
- pyvale/visualsimsensors.py +318 -0
- pyvale/visualtools.py +136 -0
- pyvale/visualtraceplotter.py +142 -0
- pyvale-2025.5.3.dist-info/METADATA +144 -0
- pyvale-2025.5.3.dist-info/RECORD +175 -0
- pyvale-2025.5.3.dist-info/WHEEL +6 -0
- pyvale-2025.5.3.dist-info/licenses/LICENSE +21 -0
- pyvale-2025.5.3.dist-info/top_level.txt +1 -0
pyvale/simcases/case10.i
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# pyvale: gmsh,3Dstcgmsh,1mat,thermomechanical,steady,
|
|
3
|
+
#-------------------------------------------------------------------------
|
|
4
|
+
|
|
5
|
+
#-------------------------------------------------------------------------
|
|
6
|
+
#_* MOOSEHERDER VARIABLES - START
|
|
7
|
+
|
|
8
|
+
# Thermal Loads/BCs
|
|
9
|
+
coolantTemp = 100.0 # degC
|
|
10
|
+
heatTransCoeff = 125.0e3 # W.m^-2.K^-1
|
|
11
|
+
surfHeatFlux = 5.0e6 # W.m^-2
|
|
12
|
+
|
|
13
|
+
# Material Properties:
|
|
14
|
+
# Thermal Props:OFHC) Copper at 250degC
|
|
15
|
+
ss316LDensity = 8829.0 # kg.m^-3
|
|
16
|
+
ss316LThermCond = 384.0 # W.m^-1.K^-1
|
|
17
|
+
ss316LSpecHeat = 406.0 # J.kg^-1.K^-1
|
|
18
|
+
|
|
19
|
+
# Mechanical Props: OFHC Copper 250degC
|
|
20
|
+
ss316LEMod = 108e9 # Pa
|
|
21
|
+
ss316LPRatio = 0.33 # -
|
|
22
|
+
|
|
23
|
+
# Thermo-mechanical coupling
|
|
24
|
+
stressFreeTemp = 150 # degC
|
|
25
|
+
cuThermExp = 17.8e-6 # 1/degC
|
|
26
|
+
|
|
27
|
+
#** MOOSEHERDER VARIABLES - END
|
|
28
|
+
#-------------------------------------------------------------------------
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
[GlobalParams]
|
|
32
|
+
displacements = 'disp_x disp_y disp_z'
|
|
33
|
+
[]
|
|
34
|
+
|
|
35
|
+
[Mesh]
|
|
36
|
+
type = FileMesh
|
|
37
|
+
file = 'case10.msh'
|
|
38
|
+
[]
|
|
39
|
+
|
|
40
|
+
[Variables]
|
|
41
|
+
[temperature]
|
|
42
|
+
family = LAGRANGE
|
|
43
|
+
order = FIRST
|
|
44
|
+
initial_condition = ${coolantTemp}
|
|
45
|
+
[]
|
|
46
|
+
[]
|
|
47
|
+
|
|
48
|
+
[Kernels]
|
|
49
|
+
[heat_conduction]
|
|
50
|
+
type = HeatConduction
|
|
51
|
+
variable = temperature
|
|
52
|
+
[]
|
|
53
|
+
[]
|
|
54
|
+
|
|
55
|
+
[Modules/TensorMechanics/Master]
|
|
56
|
+
[all]
|
|
57
|
+
strain = SMALL # SMALL or FINITE
|
|
58
|
+
incremental = true
|
|
59
|
+
add_variables = true
|
|
60
|
+
material_output_family = MONOMIAL # MONOMIAL, LAGRANGE
|
|
61
|
+
material_output_order = FIRST # CONSTANT, FIRST, SECOND,
|
|
62
|
+
automatic_eigenstrain_names = true
|
|
63
|
+
generate_output = 'vonmises_stress strain_xx strain_xy strain_xz strain_yx strain_yy strain_yz strain_zx strain_zy strain_zz stress_xx stress_xy stress_xz stress_yx stress_yy stress_yz stress_zx stress_zy stress_zz max_principal_strain mid_principal_strain min_principal_strain'
|
|
64
|
+
[]
|
|
65
|
+
[]
|
|
66
|
+
|
|
67
|
+
[Materials]
|
|
68
|
+
[copper_thermal]
|
|
69
|
+
type = HeatConductionMaterial
|
|
70
|
+
thermal_conductivity = ${ss316LThermCond}
|
|
71
|
+
specific_heat = ${ss316LSpecHeat}
|
|
72
|
+
[]
|
|
73
|
+
[copper_density]
|
|
74
|
+
type = GenericConstantMaterial
|
|
75
|
+
prop_names = 'density'
|
|
76
|
+
prop_values = ${ss316LDensity}
|
|
77
|
+
[]
|
|
78
|
+
[copper_elasticity]
|
|
79
|
+
type = ComputeIsotropicElasticityTensor
|
|
80
|
+
youngs_modulus = ${ss316LEMod}
|
|
81
|
+
poissons_ratio = ${ss316LPRatio}
|
|
82
|
+
[]
|
|
83
|
+
[copper_expansion]
|
|
84
|
+
type = ComputeThermalExpansionEigenstrain
|
|
85
|
+
temperature = temperature
|
|
86
|
+
stress_free_temperature = ${stressFreeTemp}
|
|
87
|
+
thermal_expansion_coeff = ${cuThermExp}
|
|
88
|
+
eigenstrain_name = thermal_expansion_eigenstrain
|
|
89
|
+
[]
|
|
90
|
+
|
|
91
|
+
[stress]
|
|
92
|
+
type = ComputeFiniteStrainElasticStress # ComputeLinearElasticStress or ComputeFiniteStrainElasticStress
|
|
93
|
+
[]
|
|
94
|
+
[]
|
|
95
|
+
|
|
96
|
+
[BCs]
|
|
97
|
+
[heat_flux_out]
|
|
98
|
+
type = ConvectiveHeatFluxBC
|
|
99
|
+
variable = temperature
|
|
100
|
+
boundary = 'bc-pipe-htc'
|
|
101
|
+
T_infinity = ${coolantTemp}
|
|
102
|
+
heat_transfer_coefficient = ${heatTransCoeff}
|
|
103
|
+
[]
|
|
104
|
+
[heat_flux_in]
|
|
105
|
+
type = NeumannBC
|
|
106
|
+
variable = temperature
|
|
107
|
+
boundary = 'bc-top-heatflux'
|
|
108
|
+
value = ${surfHeatFlux}
|
|
109
|
+
[]
|
|
110
|
+
|
|
111
|
+
# Lock disp_y for base
|
|
112
|
+
# NOTE: if locking y on base need to comment all disp_y conditions below
|
|
113
|
+
[mech_bc_c_dispy]
|
|
114
|
+
type = DirichletBC
|
|
115
|
+
variable = disp_y
|
|
116
|
+
boundary = 'bc-base-disp'
|
|
117
|
+
value = 0.0
|
|
118
|
+
[]
|
|
119
|
+
|
|
120
|
+
# Lock all disp DOFs at the center of the block
|
|
121
|
+
[mech_bc_c_dispx]
|
|
122
|
+
type = DirichletBC
|
|
123
|
+
variable = disp_x
|
|
124
|
+
boundary = 'bc-c-point-xyz-mech'
|
|
125
|
+
value = 0.0
|
|
126
|
+
[]
|
|
127
|
+
#[mech_bc_c_dispy]
|
|
128
|
+
# type = DirichletBC
|
|
129
|
+
# variable = disp_y
|
|
130
|
+
# boundary = 'bc-c-point-xyz-mech'
|
|
131
|
+
# value = 0.0
|
|
132
|
+
#[]
|
|
133
|
+
[mech_bc_c_dispz]
|
|
134
|
+
type = DirichletBC
|
|
135
|
+
variable = disp_z
|
|
136
|
+
boundary = 'bc-c-point-xyz-mech'
|
|
137
|
+
value = 0.0
|
|
138
|
+
[]
|
|
139
|
+
|
|
140
|
+
# Lock disp yz along the x (left-right) axis
|
|
141
|
+
#[mech_bc_l_dispy]
|
|
142
|
+
# type = DirichletBC
|
|
143
|
+
# variable = disp_y
|
|
144
|
+
# boundary = 'bc-l-point-yz-mech'
|
|
145
|
+
# value = 0.0
|
|
146
|
+
#[]
|
|
147
|
+
[mech_bc_l_dispz]
|
|
148
|
+
type = DirichletBC
|
|
149
|
+
variable = disp_z
|
|
150
|
+
boundary = 'bc-l-point-yz-mech'
|
|
151
|
+
value = 0.0
|
|
152
|
+
[]
|
|
153
|
+
#[mech_bc_r_dispy]
|
|
154
|
+
# type = DirichletBC
|
|
155
|
+
# variable = disp_y
|
|
156
|
+
# boundary = 'bc-r-point-yz-mech'
|
|
157
|
+
# value = 0.0
|
|
158
|
+
#[]
|
|
159
|
+
[mech_bc_r_dispz]
|
|
160
|
+
type = DirichletBC
|
|
161
|
+
variable = disp_z
|
|
162
|
+
boundary = 'bc-r-point-yz-mech'
|
|
163
|
+
value = 0.0
|
|
164
|
+
[]
|
|
165
|
+
|
|
166
|
+
# Lock disp xy along the z (front-back) axis
|
|
167
|
+
[mech_bc_f_dispx]
|
|
168
|
+
type = DirichletBC
|
|
169
|
+
variable = disp_x
|
|
170
|
+
boundary = 'bc-f-point-xy-mech'
|
|
171
|
+
value = 0.0
|
|
172
|
+
[]
|
|
173
|
+
#[mech_bc_f_dispy]
|
|
174
|
+
# type = DirichletBC
|
|
175
|
+
# variable = disp_y
|
|
176
|
+
# boundary = 'bc-f-point-xy-mech'
|
|
177
|
+
# value = 0.0
|
|
178
|
+
#[]
|
|
179
|
+
[mech_bc_b_dispx]
|
|
180
|
+
type = DirichletBC
|
|
181
|
+
variable = disp_x
|
|
182
|
+
boundary = 'bc-b-point-xy-mech'
|
|
183
|
+
value = 0.0
|
|
184
|
+
[]
|
|
185
|
+
#[mech_bc_b_dispy]
|
|
186
|
+
# type = DirichletBC
|
|
187
|
+
# variable = disp_y
|
|
188
|
+
# boundary = 'bc-b-point-xy-mech'
|
|
189
|
+
# value = 0.0
|
|
190
|
+
#[]
|
|
191
|
+
[]
|
|
192
|
+
|
|
193
|
+
[Preconditioning]
|
|
194
|
+
[smp]
|
|
195
|
+
type = SMP
|
|
196
|
+
full = true
|
|
197
|
+
[]
|
|
198
|
+
[]
|
|
199
|
+
|
|
200
|
+
[Executioner]
|
|
201
|
+
type = Steady
|
|
202
|
+
solve_type = 'PJFNK'
|
|
203
|
+
petsc_options_iname = '-pc_type -pc_hypre_type'
|
|
204
|
+
petsc_options_value = 'hypre boomeramg'
|
|
205
|
+
#end_time= ${endTime}
|
|
206
|
+
#dt = ${timeStep}
|
|
207
|
+
[]
|
|
208
|
+
|
|
209
|
+
[Postprocessors]
|
|
210
|
+
[temp_max]
|
|
211
|
+
type = NodalExtremeValue
|
|
212
|
+
variable = temperature
|
|
213
|
+
[]
|
|
214
|
+
[temp_avg]
|
|
215
|
+
type = AverageNodalVariableValue
|
|
216
|
+
variable = temperature
|
|
217
|
+
[]
|
|
218
|
+
|
|
219
|
+
[disp_x_max]
|
|
220
|
+
type = NodalExtremeValue
|
|
221
|
+
variable = disp_x
|
|
222
|
+
[]
|
|
223
|
+
[disp_y_max]
|
|
224
|
+
type = NodalExtremeValue
|
|
225
|
+
variable = disp_y
|
|
226
|
+
[]
|
|
227
|
+
[disp_z_max]
|
|
228
|
+
type = NodalExtremeValue
|
|
229
|
+
variable = disp_z
|
|
230
|
+
[]
|
|
231
|
+
|
|
232
|
+
[strain_xx_max]
|
|
233
|
+
type = ElementExtremeValue
|
|
234
|
+
variable = strain_xx
|
|
235
|
+
[]
|
|
236
|
+
[strain_yy_max]
|
|
237
|
+
type = ElementExtremeValue
|
|
238
|
+
variable = strain_yy
|
|
239
|
+
[]
|
|
240
|
+
[strain_zz_max]
|
|
241
|
+
type = ElementExtremeValue
|
|
242
|
+
variable = strain_zz
|
|
243
|
+
[]
|
|
244
|
+
|
|
245
|
+
#[strain_xx_avg]
|
|
246
|
+
# type = ElementAverageValue
|
|
247
|
+
# variable = strain_xx
|
|
248
|
+
#[]
|
|
249
|
+
#[strain_yy_avg]
|
|
250
|
+
# type = ElementAverageValue
|
|
251
|
+
# variable = strain_yy
|
|
252
|
+
#[]
|
|
253
|
+
[]
|
|
254
|
+
|
|
255
|
+
[Outputs]
|
|
256
|
+
exodus = true
|
|
257
|
+
[]
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
//==============================================================================
|
|
2
|
+
// Gmsh 3D Monoblock
|
|
3
|
+
// author: Lloyd Fletcher (scepticalrabbit)
|
|
4
|
+
//==============================================================================
|
|
5
|
+
SetFactory("OpenCASCADE");
|
|
6
|
+
General.Terminal = 0;
|
|
7
|
+
|
|
8
|
+
// View options: turns on/off which pieces of geometry we show
|
|
9
|
+
Geometry.Points = 0;
|
|
10
|
+
Geometry.Curves = 0;
|
|
11
|
+
Geometry.Surfaces = 0;
|
|
12
|
+
Geometry.Volumes = 0;
|
|
13
|
+
|
|
14
|
+
// View options: turns labels on and off for different types of geometry
|
|
15
|
+
Geometry.PointLabels = 0;
|
|
16
|
+
Geometry.CurveLabels = 0;
|
|
17
|
+
Geometry.SurfaceLabels = 0;
|
|
18
|
+
Geometry.VolumeLabels = 0;
|
|
19
|
+
|
|
20
|
+
//------------------------------------------------------------------------------
|
|
21
|
+
// Variable Definitions
|
|
22
|
+
|
|
23
|
+
//------------------------------------------------------------------------------
|
|
24
|
+
//_* MOOSEHERDER VARIABLES - START
|
|
25
|
+
file_name = "case11.msh";
|
|
26
|
+
num_threads = 7;
|
|
27
|
+
|
|
28
|
+
// Specified Geometry variables
|
|
29
|
+
pipe_rad_int = 6e-3;
|
|
30
|
+
pipe_thick = 1.5e-3;
|
|
31
|
+
|
|
32
|
+
interlayer_thick = 2e-3;
|
|
33
|
+
|
|
34
|
+
monoblock_depth = 12e-3;
|
|
35
|
+
monoblock_side = 3e-3;
|
|
36
|
+
monoblock_arm_height = 8e-3;
|
|
37
|
+
|
|
38
|
+
// Specified Mesh variables
|
|
39
|
+
base_divs = 1;
|
|
40
|
+
mesh_ref = 1; // Must be an integer greater than 0
|
|
41
|
+
|
|
42
|
+
//_* MOOSEHERDER VARIABLES - END
|
|
43
|
+
//------------------------------------------------------------------------------
|
|
44
|
+
|
|
45
|
+
// Calculated Geometry Variables
|
|
46
|
+
pipe_rad_ext = pipe_rad_int+pipe_thick;
|
|
47
|
+
|
|
48
|
+
interlayer_rad_int = pipe_rad_ext;
|
|
49
|
+
interlayer_rad_ext = interlayer_rad_int+interlayer_thick;
|
|
50
|
+
|
|
51
|
+
monoblock_width = 2*interlayer_rad_ext + 2*monoblock_side;
|
|
52
|
+
monoblock_height = monoblock_width + monoblock_arm_height;
|
|
53
|
+
|
|
54
|
+
pipe_cent_x = 0.0;
|
|
55
|
+
pipe_cent_y = interlayer_rad_ext + monoblock_side;
|
|
56
|
+
|
|
57
|
+
// Calculated Mesh Variables
|
|
58
|
+
pipe_sect_nodes = Round(mesh_ref*5); // Must be odd
|
|
59
|
+
pipe_rad_nodes = Round(mesh_ref*5);
|
|
60
|
+
interlayer_rad_nodes = Round(mesh_ref*5);
|
|
61
|
+
monoblock_side_nodes = Round(mesh_ref*5);
|
|
62
|
+
monoblock_arm_nodes = Round(mesh_ref*5);
|
|
63
|
+
monoblock_depth_nodes = Round(mesh_ref*2);
|
|
64
|
+
monoblock_width_nodes = Floor((pipe_sect_nodes-1)/2)+1;
|
|
65
|
+
/*
|
|
66
|
+
// This is a more reasonable mesh refinement for the monoblock but solve time
|
|
67
|
+
// is much longer
|
|
68
|
+
pipe_sect_nodes = Round(mesh_ref*11); // Must be odd
|
|
69
|
+
pipe_rad_nodes = Round(mesh_ref*7);
|
|
70
|
+
interlayer_rad_nodes = Round(mesh_ref*7);
|
|
71
|
+
monoblock_side_nodes = Round(mesh_ref*9);
|
|
72
|
+
monoblock_arm_nodes = Round(mesh_ref*11);
|
|
73
|
+
monoblock_depth_nodes = Round(mesh_ref*5);
|
|
74
|
+
monoblock_width_nodes = Floor((pipe_sect_nodes-1)/2)+1;
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
// Calculate approx element size by dividing the circumference
|
|
78
|
+
elem_size = 2*Pi*pipe_rad_int/(4*(pipe_sect_nodes-1));
|
|
79
|
+
tol = elem_size/4; // Used for selection tolerance of bounding boxes
|
|
80
|
+
|
|
81
|
+
//------------------------------------------------------------------------------
|
|
82
|
+
// Geometry Definition
|
|
83
|
+
s1 = news;
|
|
84
|
+
Rectangle(s1) =
|
|
85
|
+
{-monoblock_width/2,0.0,0.0,
|
|
86
|
+
monoblock_width/2,monoblock_width/2};
|
|
87
|
+
|
|
88
|
+
s2 = news;
|
|
89
|
+
Rectangle(s2) =
|
|
90
|
+
{-monoblock_width/2,monoblock_width/2,0.0,
|
|
91
|
+
monoblock_width/2,monoblock_width/2};
|
|
92
|
+
|
|
93
|
+
s3 = news;
|
|
94
|
+
Rectangle(s3) =
|
|
95
|
+
{0.0,monoblock_width/2,0.0,
|
|
96
|
+
monoblock_width/2,monoblock_width/2};
|
|
97
|
+
|
|
98
|
+
s4 = news;
|
|
99
|
+
Rectangle(s4) =
|
|
100
|
+
{0.0,0.0,0.0,
|
|
101
|
+
monoblock_width/2,monoblock_width/2};
|
|
102
|
+
|
|
103
|
+
sa1 = news;
|
|
104
|
+
Rectangle(sa1) =
|
|
105
|
+
{-monoblock_width/2,monoblock_width,0.0,
|
|
106
|
+
monoblock_width/2,monoblock_arm_height};
|
|
107
|
+
|
|
108
|
+
sa2 = news;
|
|
109
|
+
Rectangle(sa2) =
|
|
110
|
+
{0.0,monoblock_width,0.0,
|
|
111
|
+
monoblock_width/2,monoblock_arm_height};
|
|
112
|
+
|
|
113
|
+
BooleanFragments{ Surface{s1}; Delete; }{ Surface{s2,s3,s4,sa1,sa2}; Delete; }
|
|
114
|
+
|
|
115
|
+
pipe_block_surfs() = Surface In BoundingBox{
|
|
116
|
+
-monoblock_width/2-tol,-tol,-tol,
|
|
117
|
+
monoblock_width+tol,monoblock_width+tol,tol};
|
|
118
|
+
|
|
119
|
+
c2 = newc; Circle(c2) = {pipe_cent_x,pipe_cent_y,0.0,interlayer_rad_ext};
|
|
120
|
+
cl2 = newcl; Curve Loop(cl2) = {c2};
|
|
121
|
+
s6 = news; Plane Surface(s6) = {cl2};
|
|
122
|
+
|
|
123
|
+
c3 = newc; Circle(c3) = {pipe_cent_x,pipe_cent_y,0.0,pipe_rad_ext};
|
|
124
|
+
cl3 = newcl; Curve Loop(cl3) = {c3};
|
|
125
|
+
s7 = news; Plane Surface(s7) = {cl3};
|
|
126
|
+
|
|
127
|
+
c4 = newc; Circle(c4) = {pipe_cent_x,pipe_cent_y,0.0,pipe_rad_int};
|
|
128
|
+
cl4 = newcl; Curve Loop(cl4) = {c4};
|
|
129
|
+
s8 = news; Plane Surface(s8) = {cl4};
|
|
130
|
+
|
|
131
|
+
BooleanDifference{Surface{pipe_block_surfs(),s6,s7}; Delete;}
|
|
132
|
+
{ Surface{s8}; Delete;}
|
|
133
|
+
|
|
134
|
+
//------------------------------------------------------------------------------
|
|
135
|
+
// Transfinite Line/Curve Meshing
|
|
136
|
+
|
|
137
|
+
cm1() = Curve In BoundingBox{
|
|
138
|
+
pipe_cent_x-interlayer_rad_ext-tol,pipe_cent_y-interlayer_rad_ext-tol,-tol,
|
|
139
|
+
pipe_cent_x+interlayer_rad_ext+tol,pipe_cent_y+interlayer_rad_ext+tol,+tol};
|
|
140
|
+
|
|
141
|
+
For ss In {0:#cm1()-1}
|
|
142
|
+
Transfinite Curve(cm1(ss)) = pipe_sect_nodes;
|
|
143
|
+
EndFor
|
|
144
|
+
|
|
145
|
+
cm1() = Curve In BoundingBox{
|
|
146
|
+
pipe_cent_x+pipe_rad_int-tol,pipe_cent_y-tol,-tol,
|
|
147
|
+
pipe_cent_x+pipe_rad_ext+tol,pipe_cent_y+tol,+tol};
|
|
148
|
+
Transfinite Curve(cm1(0)) = pipe_rad_nodes;
|
|
149
|
+
|
|
150
|
+
cm2() = Curve In BoundingBox{
|
|
151
|
+
pipe_cent_x-pipe_rad_ext-tol,pipe_cent_y-tol,-tol,
|
|
152
|
+
pipe_cent_x-pipe_rad_int+tol,pipe_cent_y+tol,+tol};
|
|
153
|
+
Transfinite Curve(cm2(0)) = pipe_rad_nodes;
|
|
154
|
+
|
|
155
|
+
cm3() = Curve In BoundingBox{
|
|
156
|
+
pipe_cent_x-tol,pipe_cent_y-pipe_rad_ext-tol,-tol,
|
|
157
|
+
pipe_cent_x+tol,pipe_cent_y-pipe_rad_int+tol,+tol};
|
|
158
|
+
Transfinite Curve(cm3(0)) = pipe_rad_nodes;
|
|
159
|
+
|
|
160
|
+
cm4() = Curve In BoundingBox{
|
|
161
|
+
pipe_cent_x-tol,pipe_cent_y+pipe_rad_int-tol,-tol,
|
|
162
|
+
pipe_cent_x+tol,pipe_cent_y+pipe_rad_ext+tol,+tol};
|
|
163
|
+
Transfinite Curve(cm4(0)) = pipe_rad_nodes;
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
cm1() = Curve In BoundingBox{
|
|
167
|
+
pipe_cent_x+interlayer_rad_int-tol,pipe_cent_y-tol,-tol,
|
|
168
|
+
pipe_cent_x+interlayer_rad_ext+tol,pipe_cent_y+tol,+tol};
|
|
169
|
+
Transfinite Curve(cm1(0)) = interlayer_rad_nodes;
|
|
170
|
+
|
|
171
|
+
cm2() = Curve In BoundingBox{
|
|
172
|
+
pipe_cent_x-interlayer_rad_ext-tol,pipe_cent_y-tol,-tol,
|
|
173
|
+
pipe_cent_x-interlayer_rad_int+tol,pipe_cent_y+tol,+tol};
|
|
174
|
+
Transfinite Curve(cm2(0)) = interlayer_rad_nodes;
|
|
175
|
+
|
|
176
|
+
cm3() = Curve In BoundingBox{
|
|
177
|
+
pipe_cent_x-tol,pipe_cent_y-interlayer_rad_ext-tol,-tol,
|
|
178
|
+
pipe_cent_x+tol,pipe_cent_y-interlayer_rad_int+tol,+tol};
|
|
179
|
+
Transfinite Curve(cm3(0)) = interlayer_rad_nodes;
|
|
180
|
+
|
|
181
|
+
cm4() = Curve In BoundingBox{
|
|
182
|
+
pipe_cent_x-tol,pipe_cent_y+interlayer_rad_int-tol,-tol,
|
|
183
|
+
pipe_cent_x+tol,pipe_cent_y+interlayer_rad_ext+tol,+tol};
|
|
184
|
+
Transfinite Curve(cm4(0)) = interlayer_rad_nodes;
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
cm1() = Curve In BoundingBox{
|
|
188
|
+
pipe_cent_x+interlayer_rad_ext-tol,pipe_cent_y-tol,-tol,
|
|
189
|
+
pipe_cent_x+monoblock_width/2+tol,pipe_cent_y+tol,+tol};
|
|
190
|
+
Transfinite Curve(cm1(0)) = monoblock_side_nodes;
|
|
191
|
+
|
|
192
|
+
cm2() = Curve In BoundingBox{
|
|
193
|
+
pipe_cent_x-monoblock_width/2-tol,pipe_cent_y-tol,-tol,
|
|
194
|
+
pipe_cent_x-interlayer_rad_ext+tol,pipe_cent_y+tol,+tol};
|
|
195
|
+
Transfinite Curve(cm2(0)) = monoblock_side_nodes;
|
|
196
|
+
|
|
197
|
+
cm3() = Curve In BoundingBox{
|
|
198
|
+
pipe_cent_x-tol,pipe_cent_y-monoblock_width/2-tol,-tol,
|
|
199
|
+
pipe_cent_x+tol,pipe_cent_y-interlayer_rad_ext+tol,+tol};
|
|
200
|
+
Transfinite Curve(cm3(0)) = monoblock_side_nodes;
|
|
201
|
+
|
|
202
|
+
cm4() = Curve In BoundingBox{
|
|
203
|
+
pipe_cent_x-tol,pipe_cent_y+interlayer_rad_ext-tol,-tol,
|
|
204
|
+
pipe_cent_x+tol,pipe_cent_y+monoblock_width/2+tol,+tol};
|
|
205
|
+
Transfinite Curve(cm4(0)) = monoblock_side_nodes;
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
cm1() = Curve In BoundingBox{
|
|
209
|
+
-monoblock_width/2-tol,monoblock_width-tol,-tol,
|
|
210
|
+
monoblock_width/2+tol,monoblock_width+monoblock_arm_height+tol,+tol};
|
|
211
|
+
|
|
212
|
+
For ss In {0:#cm1()-1}
|
|
213
|
+
|
|
214
|
+
Transfinite Curve(cm1(ss)) = monoblock_arm_nodes;
|
|
215
|
+
EndFor
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
cm1() = Curve In BoundingBox{
|
|
220
|
+
-monoblock_width/2-tol,-tol,-tol,
|
|
221
|
+
-monoblock_width/2+tol,monoblock_width+tol,+tol};
|
|
222
|
+
|
|
223
|
+
For ss In {0:#cm1()-1}
|
|
224
|
+
Transfinite Curve(cm1(ss)) = monoblock_width_nodes;
|
|
225
|
+
EndFor
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
cm2() = Curve In BoundingBox{
|
|
229
|
+
monoblock_width/2-tol,-tol,-tol,
|
|
230
|
+
monoblock_width/2+tol,monoblock_width+tol,+tol};
|
|
231
|
+
|
|
232
|
+
For ss In {0:#cm2()-1}
|
|
233
|
+
Transfinite Curve(cm2(ss)) = monoblock_width_nodes;
|
|
234
|
+
EndFor
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
// Mesh top, bottom and armour horizontal lines
|
|
238
|
+
cm3() = Curve In BoundingBox{
|
|
239
|
+
-monoblock_width/2-tol,-tol,-tol,
|
|
240
|
+
monoblock_width/2+tol,+tol,+tol};
|
|
241
|
+
|
|
242
|
+
For ss In {0:#cm3()-1}
|
|
243
|
+
Transfinite Curve(cm3(ss)) = monoblock_width_nodes;
|
|
244
|
+
EndFor
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
cm3() = Curve In BoundingBox{
|
|
248
|
+
-monoblock_width/2-tol,monoblock_width-tol,-tol,
|
|
249
|
+
monoblock_width/2+tol,monoblock_width+tol,+tol};
|
|
250
|
+
|
|
251
|
+
For ss In {0:#cm3()-1}
|
|
252
|
+
Transfinite Curve(cm3(ss)) = monoblock_width_nodes;
|
|
253
|
+
EndFor
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
cm4() = Curve In BoundingBox{
|
|
257
|
+
-monoblock_width/2-tol,monoblock_width+monoblock_arm_height+-tol,-tol,
|
|
258
|
+
monoblock_width/2+tol,monoblock_width+monoblock_arm_height+tol,+tol};
|
|
259
|
+
|
|
260
|
+
For ss In {0:#cm4()-1}
|
|
261
|
+
Transfinite Curve(cm4(ss)) = monoblock_width_nodes;
|
|
262
|
+
EndFor
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
//------------------------------------------------------------------------------
|
|
266
|
+
// Transfinite Surface Meshing
|
|
267
|
+
|
|
268
|
+
// Mesh the pipe and interlayer
|
|
269
|
+
sm1() = Surface In BoundingBox{
|
|
270
|
+
pipe_cent_x-interlayer_rad_ext-tol,pipe_cent_y-interlayer_rad_ext-tol,-tol,
|
|
271
|
+
pipe_cent_x+interlayer_rad_ext+tol,pipe_cent_y+interlayer_rad_ext+tol,+tol};
|
|
272
|
+
|
|
273
|
+
For ss In {0:#sm1()-1}
|
|
274
|
+
Transfinite Surface{sm1(ss)};
|
|
275
|
+
Recombine Surface{sm1(ss)};
|
|
276
|
+
EndFor
|
|
277
|
+
|
|
278
|
+
// Mesh the armour on top of the block
|
|
279
|
+
sm1() = Surface In BoundingBox{
|
|
280
|
+
-monoblock_width/2-tol,monoblock_width-tol,-tol,
|
|
281
|
+
monoblock_width/2+tol,monoblock_width+monoblock_arm_height+tol,+tol};
|
|
282
|
+
|
|
283
|
+
For ss In {0:#sm1()-1}
|
|
284
|
+
Transfinite Surface{sm1(ss)};
|
|
285
|
+
Recombine Surface{sm1(ss)};
|
|
286
|
+
EndFor
|
|
287
|
+
|
|
288
|
+
// Mesh the block around the interlayer
|
|
289
|
+
Transfinite Surface{22} = {15,16,17,13};
|
|
290
|
+
Recombine Surface{22};
|
|
291
|
+
|
|
292
|
+
Transfinite Surface{27} = {15,24,5,13};
|
|
293
|
+
Recombine Surface{27};
|
|
294
|
+
|
|
295
|
+
Transfinite Surface{30} = {24,5,28,27};
|
|
296
|
+
Recombine Surface{30};
|
|
297
|
+
|
|
298
|
+
Transfinite Surface{31} = {27,28,17,16};
|
|
299
|
+
Recombine Surface{31};
|
|
300
|
+
|
|
301
|
+
//------------------------------------------------------------------------------
|
|
302
|
+
// Extrude the surface mesh to 3D
|
|
303
|
+
Extrude{0.0,0.0,monoblock_depth}{
|
|
304
|
+
Surface{:}; Layers{monoblock_depth_nodes}; Recombine;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
//------------------------------------------------------------------------------
|
|
308
|
+
// Physical Surfaces for Loads and Boundary Condition
|
|
309
|
+
Physical Surface("bc-top-heatflux") = {36,41};
|
|
310
|
+
Physical Surface("bc-pipe-heattransf") = {54,59,83,67};
|
|
311
|
+
|
|
312
|
+
//------------------------------------------------------------------------------
|
|
313
|
+
// Physical Volumes for Material Defs
|
|
314
|
+
Physical Volume("pipe-cucrzr") = {6,9,5,14};
|
|
315
|
+
Physical Volume("interlayer-cu") = {4,7,10,13};
|
|
316
|
+
Physical Volume("armour-w") = {1,2,8,11,3,12};
|
|
317
|
+
|
|
318
|
+
//------------------------------------------------------------------------------
|
|
319
|
+
// Global Mesh controls
|
|
320
|
+
Mesh.Algorithm = 6;
|
|
321
|
+
Mesh.Algorithm3D = 10;
|
|
322
|
+
|
|
323
|
+
General.NumThreads = num_threads;
|
|
324
|
+
Mesh.MaxNumThreads1D = num_threads;
|
|
325
|
+
Mesh.MaxNumThreads2D = num_threads;
|
|
326
|
+
Mesh.MaxNumThreads3D = num_threads;
|
|
327
|
+
|
|
328
|
+
Mesh.ElementOrder = 2;
|
|
329
|
+
|
|
330
|
+
Mesh 3;
|
|
331
|
+
|
|
332
|
+
//------------------------------------------------------------------------------
|
|
333
|
+
// Save and exit
|
|
334
|
+
Save Str(file_name);
|
|
335
|
+
Exit;
|
|
336
|
+
|
|
337
|
+
|