Repository navigation
Expand file tree
/
Copy pathrun_preprocessing.py
More file actions
83 lines (71 loc) · 3.42 KB
/
Copy pathrun_preprocessing.py
File metadata and controls
83 lines (71 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env python3
# Author: Octavio Castillo Reyes
# Contact: octavio.castillo@bsc.es
''' **PETGEM** preprocessing. This script provides all common utility
functions and transformer methods to change raw feature data into a
representation that is suitable for **PETGEM** modelling.
THIS TASK IS ABSOLUTELY SEQUENTIAL.
'''
# ###############################################
# ----------------- Load modules ----------------
import sys
import numpy as np
# ###############################################
# ------------- Load PETGEM modules -------------
from petgem.base.styles import printPetgemHeader
from petgem.base.styles import printPetgemFooter
from petgem.parallel.parallel import printMessage
from petgem.preprocessing.preprocessing import readPreprocessingParams
from petgem.preprocessing.preprocessing import preprocessNodes
from petgem.preprocessing.preprocessing import preprocessingNodalConnectivity
from petgem.preprocessing.preprocessing import preprocessingDOF
from petgem.preprocessing.preprocessing import preprocessingConductivityModel
from petgem.preprocessing.preprocessing import preprocessingDataReceivers
from petgem.preprocessing.preprocessing import preprocessingNNZ
from petgem.preprocessing.preprocessing import printPreprocessingSummary
# ###############################################
# COMMENT: PETGEM preprocessing is a sequential task, therefore
# rank == 0 in order to use parallel PETGEM functions
# ###############################################
# ----------- Print header (Master) -------------
rank = 0
printPetgemHeader(rank)
# ###############################################
# ----------------- User input ------------------
printMessage('\nInit', rank)
printMessage('='*75, rank)
input_params = sys.argv
preprocessing = readPreprocessingParams(input_params, rank)
# ###############################################
# ----------- Check and read user input ---------
printMessage('\nData preprocessing', rank)
printMessage('='*75, rank)
# ###############################################
# ----------- Data preprocessing ---------
# Nodal coordinates preprocessing (nodes)
nNodes = preprocessNodes(preprocessing['MESH_FILE'],
preprocessing['OUT_DIR'], rank)
# Nodal connectivity preprocessing (elemsN)
nElems = preprocessingNodalConnectivity(preprocessing['MESH_FILE'],
preprocessing['OUT_DIR'], rank)
# Degrees of freedom preprocessing (dofs)
nDofs = preprocessingDOF(preprocessing['MESH_FILE'],
preprocessing['OUT_DIR'], rank)
# Conductivity model
preprocessingConductivityModel(preprocessing['MESH_FILE'],
preprocessing['MATERIAL_CONDUCTIVITIES'],
preprocessing['OUT_DIR'], rank)
# Receiver positions
nReceivers = preprocessingDataReceivers(preprocessing['MESH_FILE'],
preprocessing['RECEIVERS_FILE'],
preprocessing['OUT_DIR'], rank)
# Sparsity pattern for parallel matrix allocation
preprocessingNNZ(preprocessing['MESH_FILE'], preprocessing['OUT_DIR'], rank)
# ###############################################
# ------------------ Summary --------------------
printMessage('\nSummary', rank)
printMessage('='*75, rank)
printPreprocessingSummary(nNodes, nElems, nDofs, nReceivers, rank)
# ###############################################
# ----------- Print footer (Master) -------------
printPetgemFooter(rank)