My Project
frictionBlockSignal.py
Go to the documentation of this file.
1 from frictionImports import *
2 import yaml
3 
4 try:
5  from yaml import CLoader as Loader, CDumper as Dumper
6 except ImportError:
7  from yaml import Loader, Dumper
8 
10  def __init__(
11  self,
12  run_name = "",
13  numeric_method = "_midpoint_",
14  plot_start_interval = None,
15  plot_end_interval = None
16  ):
17 
18  self.loadFiles(run_name, numeric_method)
19  self.setUpPlot(plot_start_interval, plot_end_interval)
20  self.calculateAmplitude()
21 
22  def loadFiles(
23  self,
24  run_name,
25  numeric_method
26  ):
27  self.results_path = os.path.dirname(os.path.realpath(__file__)) + "/../../../results/"
28  results_folder = "/results/"
29 
30  stream = open(self.results_path + run_name + "/doc/yaml/parameters.yaml", 'r')
31  self.run_parameters = yaml.load(stream, Loader = Loader)
32 
33  shared_names = self.run_parameters["Parameters"]["file_name"]
34 
35  self.block_velocity = np.loadtxt(self.results_path + run_name + results_folder + shared_names + numeric_method + "block_velocity.csv", delimiter=",")
36 
38  self
39  ):
40  half_point_velocity_index = int(self.run_parameters["Parameters"]["max_time"]/(2*self.run_parameters["Parameters"]["dt"]) -1)
41  if(self.one_block_boolean):
42  half_of_velocity = self.block_velocity[half_point_velocity_index:]
43  else:
44  half_of_velocity = self.block_velocity[0][half_point_velocity_index:]
45  half_of_velocity_average = np.average(half_of_velocity)
46 
47  amplitude = np.sqrt(2)*np.sqrt(np.average(np.power(half_of_velocity - half_of_velocity_average,2)))
48  print(amplitude* 25)
49 
50  plt.plot(np.abs(half_of_velocity - half_of_velocity_average))
51  plt.show()
52  print(half_point_velocity_index)
53  print(half_of_velocity)
54 
55  def setUpPlot(
56  self,
57  plot_start_interval,
58  plot_end_interval
59  ):
60  self.one_block_boolean = False
61 
62  if((plot_start_interval or plot_end_interval) is None):
63  start = 0
64  max_time = self.run_parameters["Parameters"]["max_time"]
65  else:
66  start = plot_start_interval
67  max_time = plot_end_interval
68 
69  start_block_index = start/self.run_parameters["Parameters"]["dt"]
70  max_time_block_index = max_time/self.run_parameters["Parameters"]["dt"] - 1
71  amount_data_points = max_time_block_index - start_block_index
72 
73  if(len(self.block_velocity.shape) == 1):
74  self.one_block_boolean = True
75  self.x = np.linspace(start = start, stop = max_time, num = amount_data_points)
76  self.block_indexes = np.linspace(start = start_block_index, stop = max_time_block_index, num = max_time_block_index - start_block_index, dtype=int)
77 
78  self.step_size = amount_data_points
79  else:
80  self.x = np.linspace(start = start, stop = max_time, num = amount_data_points)
81  self.block_indexes = np.linspace(start = start_block_index, stop = max_time_block_index, num = max_time_block_index - start_block_index, dtype = int)
82  self.step_size = amount_data_points
83 
84  print(self.block_indexes, len(self.block_indexes))
85 
86  def plotVelocity(
87  self
88  ):
89  if(not self.one_block_boolean):
90  for i in range(0, len(self.block_velocity)):
91  plt.plot(self.x, self.block_velocity[i][self.block_indexes], label = "Block: " + str(i))
92  else:
93  plt.plot(self.x, self.block_velocity[self.block_indexes], label = "Block: " + "1")
94 
95  #plt.title("Position plot of blocks", fontdict={'fontname': 'Times New Roman', 'fontsize': 21}, y=1.03)
96  plt.ylabel("$y$")
97  plt.xlabel("$t$")
98  plt.legend()
99  plt.show()
100 
101 def run():
102  if(len(sys.argv) == 4):
103  frictionBlockSignal = FrictionBlockSignal(sys.argv[1], "_midpoint_", int(sys.argv[2]), int(sys.argv[3]))
104  elif(len(sys.argv) == 2):
105  frictionBlockSignal = FrictionBlockSignal(sys.argv[1])
106  else:
107  raise Exception("Need to have either no interval values or two, start and end.")
108  frictionBlockSignal.plotVelocity()
109 
110 
111 if __name__ == "__main__":
112  run()
def setUpPlot(self, plot_start_interval, plot_end_interval)
def loadFiles(self, run_name, numeric_method)
def __init__(self, run_name="", numeric_method="_midpoint_", plot_start_interval=None, plot_end_interval=None)