Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F88866834
read_h5.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Oct 21, 01:59
Size
3 KB
Mime Type
text/x-python
Expires
Wed, Oct 23, 01:59 (2 d)
Engine
blob
Format
Raw Data
Handle
21828946
Attached To
R11910 Additive Manufacturing Work
read_h5.py
View Options
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 14 14:53:25 2022
@author: ekinkubilay
"""
from
fenics
import
*
def
get_previous_temperature
(
current_layer_no
,
final_step
):
#allow extrapolation for now
parameters
[
'allow_extrapolation'
]
=
True
#set directory names
mesh_dir
=
'../Part_geometry/mesh/'
temp_data_dir
=
'results/'
#set file names
previous_layer_no
=
current_layer_no
-
1
previous_mesh_name
=
'layer_{}.xdmf'
.
format
(
str
(
previous_layer_no
)
.
zfill
(
3
))
current_mesh_name
=
'layer_{}.xdmf'
.
format
(
str
(
current_layer_no
)
.
zfill
(
3
))
previous_temperature_name
=
'temperature_layer_{}.h5'
.
format
(
str
(
previous_layer_no
)
.
zfill
(
3
))
previous_mesh_file
=
mesh_dir
+
previous_mesh_name
current_mesh_file
=
mesh_dir
+
current_mesh_name
previous_temperature_file
=
temp_data_dir
+
previous_temperature_name
#load old previous layer mesh
mesh
=
Mesh
()
filename
=
previous_mesh_file
#filename = '../Part_geometry/mesh/layer_009.xdmf'
f
=
XDMFFile
(
MPI
.
comm_world
,
filename
)
f
.
read
(
mesh
)
MeshTransformation
.
rescale
(
mesh
,
1e-3
,
Point
(
0
,
0
,
0
))
#in m
f
.
close
()
#load previous layer Temperature function
#hdf5_file = HDF5File(MPI.comm_world, 'results/trial.h5', "r")
hdf5_file
=
HDF5File
(
MPI
.
comm_world
,
previous_temperature_file
,
"r"
)
#define function space for V
V
=
FunctionSpace
(
mesh
,
"CG"
,
1
)
#define temperature of old layer
T_old
=
Function
(
V
)
#define the last time step
#t = 1983
t
=
final_step
#define name of the vector
vec_name
=
"/Temperature/vector_
%d
"
%
t
#read the temperature of the last time step of previous layer
hdf5_file
.
read
(
T_old
,
vec_name
)
timestamp
=
hdf5_file
.
attributes
(
vec_name
)[
"timestamp"
]
hdf5_file
.
close
()
#output the read temperature on the previous mesh
xdmf_file
=
XDMFFile
(
MPI
.
comm_world
,
'results/retrial.xdmf'
)
xdmf_file
.
parameters
[
"flush_output"
]
=
True
xdmf_file
.
parameters
[
"functions_share_mesh"
]
=
True
xdmf_file
.
parameters
[
"rewrite_function_mesh"
]
=
False
#xdmf_file.write_checkpoint(T_old, "Temperature", t, XDMFFile.Encoding.HDF5)
T_old
.
rename
(
"Temperature"
,
"Temperature"
)
xdmf_file
.
write
(
T_old
,
t
)
#load current layer mesh
mesh
=
Mesh
()
#filename = '../Part_geometry/mesh/layer_010.xdmf'
filename
=
current_mesh_file
f
=
XDMFFile
(
MPI
.
comm_world
,
filename
)
f
.
read
(
mesh
)
MeshTransformation
.
rescale
(
mesh
,
1e-3
,
Point
(
0
,
0
,
0
))
#in m
f
.
close
()
#define function space for V
V
=
FunctionSpace
(
mesh
,
"CG"
,
1
)
#define temperature of new layer
T_new
=
Function
(
V
)
#interpolate the previous temperature field onto new temperature field
LagrangeInterpolator
.
interpolate
(
T_new
,
T_old
)
#output the read temperature on the current mesh
xdmf_file
=
XDMFFile
(
MPI
.
comm_world
,
'results/retrial2.xdmf'
)
xdmf_file
.
parameters
[
"flush_output"
]
=
True
xdmf_file
.
parameters
[
"functions_share_mesh"
]
=
True
xdmf_file
.
parameters
[
"rewrite_function_mesh"
]
=
False
#xdmf_file.write_checkpoint(T_old, "Temperature", t, XDMFFile.Encoding.HDF5)
T_new
.
rename
(
"Temperature"
,
"Temperature"
)
xdmf_file
.
write
(
T_new
,
t
)
parameters
[
'allow_extrapolation'
]
=
False
return
T_new
Event Timeline
Log In to Comment