PeriDEM 0.2.0
PeriDEM -- Peridynamics-based high-fidelity model for granular media
Loading...
Searching...
No Matches
util.py
Go to the documentation of this file.
1import os
2import numpy as np
3import sys
4
5def print_const(arg, fmt = '%4.6e', prefix = ""):
6 return prefix + fmt % arg + '\n'
7
8def print_list(arg, fmt = '%4.6e', delim = ', '):
9 a = ''
10 for i in range(len(arg)):
11 a += fmt % arg[i]
12 if i < len(arg) - 1:
13 a += delim
14 return a
15
16def print_bool(arg, prefix = ""):
17 return prefix + 'True\n' if arg == True else 'False\n'
18
19def print_dbl(arg, prefix = ""):
20 return print_const(arg, '%4.6e', prefix)
21
22def print_int(arg, prefix = ""):
23 return print_const(arg, '%d', prefix)
24
25def print_dbl_list(arg, prefix = ""):
26 a = prefix + '[' + print_list(arg, '%4.6e') + ']\n'
27 return a
28
29def print_int_list(arg, prefix = ""):
30 a = prefix + '[' + print_list(arg, '%d') + ']\n'
31 return a
32
33def print_point_gmsh(arg, n):
34 return 'Point(%d) = {' % n + print_list(arg) + '};\n'
35
36def print_cir_gmsh(arg, n):
37 return 'Circle(%d) = {' % n + print_list(arg, '%d') + '};\n'
38
39def print_line_gmsh(arg, n):
40 return 'Line(%d) = {' % n + print_list(arg, '%d') + '};\n'
41
43 return 'Line Loop(%d) = {' % n + print_list(arg, '%d') + '};\n'
44
46 f.write('cl__1 = 1;\n')
47 f.write('Mesh.MshFileVersion = 2.2;\n')
48
49def get_E(K, nu):
50 """
51 Returns Young's modulus given bulk modulus and Poisson's ratio
52
53 Parameters
54 ----------
55 K : float
56 Bulk modulus
57 nu : float
58 Poisson's ratio
59
60 Returns
61 -------
62 float
63 Young's modulus
64 """
65 return 3. * K * (1. - 2. * nu)
66
67def get_G(E, nu):
68 """
69 Returns shear modulus given Young's modulus and Poisson's ratio
70
71 Parameters
72 ----------
73 E: float
74 Young's modulus
75 nu : float
76 Poisson's ratio
77
78 Returns
79 -------
80 float
81 Shear modulus
82 """
83 return E / (2. * (1. + nu))
84
85
86def get_eff_k(k1, k2):
87 """
88 Returns effective bulk modulus
89
90 Parameters
91 ----------
92 k1: float
93 First bulk modulus
94 k2 : float
95 Second bulk modulus
96
97 Returns
98 -------
99 float
100 Effective bulk modulus
101 """
102 return 2. * k1 * k2 / (k1 + k2)
103
104def get_max(l):
105 """
106 Returns maximum value in list
107
108 Parameters
109 ----------
110 l: list
111 List of values
112
113 Returns
114 -------
115 float
116 Maximum value
117 """
118 l = np.array(l)
119 return l.max()
120
121
122def write_contact_zone_part(inpf, R_contact_factor, damping_active, friction_active, beta_n_eps, friction_coeff, Kn_factor, beta_n_factor, zone_string, Kn):
123 inpf.write(" Zone_%s:\n" % (zone_string))
124 inpf.write(" Contact_Radius_Factor: %4.6e\n" % (R_contact_factor))
125
126 if damping_active == False:
127 inpf.write(" Damping_On: false\n")
128 if friction_active == False:
129 inpf.write(" Friction_On: false\n")
130
131 inpf.write(" Kn: %4.6e\n" % (Kn))
132 inpf.write(" Epsilon: %4.6e\n" % (beta_n_eps))
133 inpf.write(" Friction_Coeff: %4.6e\n" % (friction_coeff))
134 inpf.write(" Kn_Factor: %4.6e\n" % (Kn_factor))
135 inpf.write(" Beta_n_Factor: %4.6e\n" % (beta_n_factor))
136
137def write_material_zone_part(inpf, zone_string, horizon, rho, K, G, Gc):
138 inpf.write(" Zone_%s:\n" % (zone_string))
139 inpf.write(" Type: PDState\n")
140 inpf.write(" Horizon: %4.6e\n" % (horizon))
141 inpf.write(" Density: %4.6e\n" % (rho))
142 inpf.write(" Compute_From_Classical: true\n")
143 inpf.write(" K: %4.6e\n" % (K))
144 inpf.write(" G: %4.6e\n" % (G))
145 inpf.write(" Gc: %4.6e\n" % (Gc))
146 inpf.write(" Influence_Function:\n")
147 inpf.write(" Type: 1\n")
148
149def copy_contact_zone(inpf, zone_numbers, zone_copy_from):
150 for s in zone_numbers:
151 inpf.write(" Zone_%d:\n" % (s))
152 inpf.write(" Copy_Contact_Data: " + print_int_list(zone_copy_from))
print_line_gmsh(arg, n)
Definition util.py:39
print_int_list(arg, prefix="")
Definition util.py:29
print_point_gmsh(arg, n)
Definition util.py:33
get_max(l)
Definition util.py:104
copy_contact_zone(inpf, zone_numbers, zone_copy_from)
Definition util.py:149
print_const(arg, fmt='%4.6e', prefix="")
Definition util.py:5
print_cir_gmsh(arg, n)
Definition util.py:36
get_eff_k(k1, k2)
Definition util.py:86
print_bool(arg, prefix="")
Definition util.py:16
get_G(E, nu)
Definition util.py:67
write_contact_zone_part(inpf, R_contact_factor, damping_active, friction_active, beta_n_eps, friction_coeff, Kn_factor, beta_n_factor, zone_string, Kn)
Definition util.py:122
gmsh_file_hdr(f)
Definition util.py:45
print_dbl_list(arg, prefix="")
Definition util.py:25
print_list(arg, fmt='%4.6e', delim=', ')
Definition util.py:8
print_int(arg, prefix="")
Definition util.py:22
print_lineloop_gmsh(arg, n)
Definition util.py:42
get_E(K, nu)
Definition util.py:49
print_dbl(arg, prefix="")
Definition util.py:19
write_material_zone_part(inpf, zone_string, horizon, rho, K, G, Gc)
Definition util.py:137