Schersteifigkeit für TUD und Labor Hart ergänzt. Auswertung läuft
This commit is contained in:
@@ -37,7 +37,6 @@ class DataSheartest(RawData):
|
|||||||
N = ListField(IntField())
|
N = ListField(IntField())
|
||||||
s_vert_1 = ListField(FloatField())
|
s_vert_1 = ListField(FloatField())
|
||||||
s_vert_2 = ListField(FloatField())
|
s_vert_2 = ListField(FloatField())
|
||||||
s_vert_sum = ListField(FloatField(), required=False)
|
|
||||||
s_piston = ListField(FloatField(), required=False)
|
s_piston = ListField(FloatField(), required=False)
|
||||||
s_hor_1 = ListField(FloatField(), required=False)
|
s_hor_1 = ListField(FloatField(), required=False)
|
||||||
s_hor_2 = ListField(FloatField(), required=False)
|
s_hor_2 = ListField(FloatField(), required=False)
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ class DataSineLoad():
|
|||||||
|
|
||||||
for col in [
|
for col in [
|
||||||
's_hor_sum', 's_hor_1', 's_hor_2', 's_vert_sum', 's_vert_1',
|
's_hor_sum', 's_hor_1', 's_hor_2', 's_vert_sum', 's_vert_1',
|
||||||
's_vert_2'
|
's_vert_2', 's_piston', 'extension',
|
||||||
]:
|
]:
|
||||||
if col in self.data.columns:
|
if col in self.data.columns:
|
||||||
self.data[col] = self.data[col].mul(self.unit_s)
|
self.data[col] = self.data[col].mul(self.unit_s)
|
||||||
@@ -232,12 +232,16 @@ class DataSineLoad():
|
|||||||
cols = self.data.columns
|
cols = self.data.columns
|
||||||
|
|
||||||
if not 's_hor_sum' in cols:
|
if not 's_hor_sum' in cols:
|
||||||
self.data['s_hor_sum'] = self.data[['s_hor_1',
|
if ('s_hor_1' in self.data.columns) & ('s_hor_2'
|
||||||
's_hor_2']].sum(axis=1)
|
in self.data.columns):
|
||||||
|
self.data['s_hor_sum'] = self.data[['s_hor_1',
|
||||||
|
's_hor_2']].sum(axis=1)
|
||||||
|
|
||||||
if not 's_vert_sum' in cols:
|
if not 's_vert_sum' in cols:
|
||||||
self.data['s_vert_sum'] = self.data[['s_vert_1',
|
if ('s_vert_1' in self.data.columns) & ('s_vert_2'
|
||||||
's_vert_2']].sum(axis=1)
|
in self.data.columns):
|
||||||
|
self.data['s_vert_sum'] = self.data[['s_vert_1',
|
||||||
|
's_vert_2']].sum(axis=1)
|
||||||
|
|
||||||
def _post_opt_data(self):
|
def _post_opt_data(self):
|
||||||
#set dtypes:
|
#set dtypes:
|
||||||
|
|||||||
@@ -79,11 +79,12 @@ class ShearTest(DataSineLoad):
|
|||||||
self.col_as_float = ['T', 'F', 's_piston', 's_hor_1', 's_hor_2']
|
self.col_as_float = ['T', 'F', 's_piston', 's_hor_1', 's_hor_2']
|
||||||
|
|
||||||
self.val_col_names = [
|
self.val_col_names = [
|
||||||
'time', 'T', 'f', 'sigma_normal', 'extension', 'N', 'F', 's_hor_1',
|
'time', 'T', 'f', 'sigma_normal', 'extension', 'N', 'F',
|
||||||
's_hor_2', 's_vert_1', 's_vert_2'
|
's_vert_1', 's_vert_2'
|
||||||
]
|
]
|
||||||
|
|
||||||
self.round_values = [('T', 1), ('sigma_normal', 1), ('f', 1)]
|
self.round_values = [('T', 1), ('sigma_normal', 1), ('f', 1),
|
||||||
|
('extension', 6)]
|
||||||
|
|
||||||
self.columns_analyse = [
|
self.columns_analyse = [
|
||||||
'F', 's_vert_sum', 's_vert_1', 's_vert_2', 's_hor_1', 's_hor_2',
|
'F', 's_vert_sum', 's_vert_1', 's_vert_2', 's_hor_1', 's_hor_2',
|
||||||
@@ -91,9 +92,7 @@ class ShearTest(DataSineLoad):
|
|||||||
]
|
]
|
||||||
|
|
||||||
# Header names after standardization; check if exists
|
# Header names after standardization; check if exists
|
||||||
self.val_header_names = [
|
self.val_header_names = ['speciment_diameter', 'broken']
|
||||||
'speciment_height', 'speciment_diameter', 'broken'
|
|
||||||
]
|
|
||||||
|
|
||||||
self.number_of_load_cycles_for_analysis = 5
|
self.number_of_load_cycles_for_analysis = 5
|
||||||
|
|
||||||
@@ -172,9 +171,8 @@ class ShearTestExtension(ShearTest):
|
|||||||
time=data.index,
|
time=data.index,
|
||||||
F=list(data['F']),
|
F=list(data['F']),
|
||||||
N=list(data['N']),
|
N=list(data['N']),
|
||||||
s_vert_1=list(data['s_hor_1']),
|
s_vert_1=list(data['s_vert_1']),
|
||||||
s_vert_2=list(data['s_hor_2']),
|
s_vert_2=list(data['s_vert_2']),
|
||||||
s_vert_sum=list(data['s_hor_sum']),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# add optional datas
|
# add optional datas
|
||||||
@@ -230,74 +228,77 @@ class ShearTestExtension(ShearTest):
|
|||||||
Calculate Results
|
Calculate Results
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self._logger.info('run _calc base')
|
self._logger.info('run _calc')
|
||||||
print('run BASE')
|
|
||||||
|
|
||||||
self.fit = []
|
self.fit = []
|
||||||
|
|
||||||
for idx_data, data in enumerate(self.data):
|
for idx_data, data in enumerate(self.data):
|
||||||
|
|
||||||
if data is None: continue
|
try:
|
||||||
|
if data is None: continue
|
||||||
|
|
||||||
data.index = data.index - data.index[0]
|
data.index = data.index - data.index[0]
|
||||||
|
|
||||||
res_temp = {}
|
res_temp = {}
|
||||||
res_temp['idx'] = idx_data
|
res_temp['idx'] = idx_data
|
||||||
|
|
||||||
# Fitting
|
# Fitting
|
||||||
freq = data['f'].mean()
|
freq = data['f'].mean()
|
||||||
sigma_normal = data['sigma_normal'].mean()
|
sigma_normal = data['sigma_normal'].mean()
|
||||||
T = data['T'].mean()
|
T = data['T'].mean()
|
||||||
extension = data['extension'].mean()
|
extension = data['extension'].mean()
|
||||||
|
|
||||||
x = data.index.values
|
x = data.index.values
|
||||||
|
|
||||||
for idxcol, col in enumerate(self.columns_analyse):
|
for idxcol, col in enumerate(self.columns_analyse):
|
||||||
|
|
||||||
if not col in data.columns: continue
|
if not col in data.columns: continue
|
||||||
|
|
||||||
y = data[col].values
|
y = data[col].values
|
||||||
|
|
||||||
res = fit_cos(x, y, freq=freq)
|
res = fit_cos(x, y, freq=freq)
|
||||||
|
|
||||||
for key, value in res.items():
|
for key, value in res.items():
|
||||||
res_temp[f'fit_{col}_{key}'] = value
|
res_temp[f'fit_{col}_{key}'] = value
|
||||||
|
|
||||||
res_temp[f'fit_{col}_max'] = max(y)
|
res_temp[f'fit_{col}_max'] = max(y)
|
||||||
res_temp[f'fit_{col}_min'] = min(y)
|
res_temp[f'fit_{col}_min'] = min(y)
|
||||||
|
|
||||||
# add more metadata
|
# add more metadata
|
||||||
res_temp['f_set'] = freq
|
res_temp['f_set'] = freq
|
||||||
res_temp['sigma_normal'] = sigma_normal
|
res_temp['sigma_normal'] = sigma_normal
|
||||||
res_temp['T_set'] = T
|
res_temp['T_set'] = T
|
||||||
res_temp['extension'] = extension
|
res_temp['extension'] = extension
|
||||||
res_temp['broken'] = self.metadata['broken']
|
res_temp['broken'] = self.metadata['broken']
|
||||||
|
|
||||||
res_temp['N_from'] = int(data['N'].min())
|
res_temp['N_from'] = int(data['N'].min())
|
||||||
res_temp['N_to'] = int(data['N'].max())
|
res_temp['N_to'] = int(data['N'].max())
|
||||||
res_temp['N_tot'] = int(self.max_N_in_data[idx_data])
|
res_temp['N_tot'] = int(self.max_N_in_data[idx_data])
|
||||||
|
|
||||||
res_temp['n_samples_per_cycle'] = int(
|
res_temp['n_samples_per_cycle'] = int(
|
||||||
len(data) / (res_temp['N_to'] - res_temp['N_from'] + 1))
|
len(data) / (res_temp['N_to'] - res_temp['N_from'] + 1))
|
||||||
|
|
||||||
## Schersteifigkeit berechnen
|
## Schersteifigkeit berechnen
|
||||||
deltaF = res_temp['fit_F_amp']
|
deltaF = res_temp['fit_F_amp']
|
||||||
deltaS = res_temp['fit_s_vert_sum_amp']
|
deltaS = res_temp['fit_s_vert_sum_amp']
|
||||||
|
|
||||||
A = np.pi * self.metadata['speciment_diameter']**2 / 4
|
A = np.pi * self.metadata['speciment_diameter']**2 / 4
|
||||||
tau = deltaF / A
|
tau = deltaF / A
|
||||||
gamma = deltaS / self.gap_width
|
gamma = deltaS / self.gap_width
|
||||||
|
|
||||||
res_temp['G'] = tau / gamma
|
res_temp['G'] = tau / gamma
|
||||||
|
|
||||||
#metadaten
|
#metadaten
|
||||||
#for c in ['T', 'extension', 'sigma_normal', 'f']:
|
#for c in ['T', 'extension', 'sigma_normal', 'f']:
|
||||||
# res_temp[c] = res_temp[c][0]
|
# res_temp[c] = res_temp[c][0]
|
||||||
|
|
||||||
self.fit.append(res_temp)
|
self.fit.append(res_temp)
|
||||||
|
|
||||||
if (self.debug) & (len(self.fit) > 5):
|
if (self.debug) & (len(self.fit) > 5):
|
||||||
break
|
break
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
self._logger.critical(e, exc_info=True)
|
||||||
|
|
||||||
self.fit = pd.DataFrame.from_records(self.fit)
|
self.fit = pd.DataFrame.from_records(self.fit)
|
||||||
|
|
||||||
@@ -404,3 +405,49 @@ class ShearTestExtensionLaborHart(ShearTestExtension):
|
|||||||
# log infos
|
# log infos
|
||||||
self._logger.info(self.metadata)
|
self._logger.info(self.metadata)
|
||||||
self._logger.info(self.data.head())
|
self._logger.info(self.data.head())
|
||||||
|
|
||||||
|
|
||||||
|
class ShearTestExtensionTUDresden(ShearTestExtension):
|
||||||
|
|
||||||
|
def _define_units(self):
|
||||||
|
|
||||||
|
self.unit_s = 1 / 1000. #mm
|
||||||
|
self.unit_F = 1.0 #N
|
||||||
|
self.unit_t = 1.0 #s
|
||||||
|
|
||||||
|
def update_parameter(self):
|
||||||
|
|
||||||
|
self.meta_names_of_parameter = {
|
||||||
|
't': ['TIME'],
|
||||||
|
'speciment_diameter': ['Diameter of specimen\r\n'],
|
||||||
|
} #list of names
|
||||||
|
|
||||||
|
self.data_column_names = {
|
||||||
|
'time': ['TIME'],
|
||||||
|
'f': ['soll frequency'],
|
||||||
|
'T': ['soll temperature'],
|
||||||
|
'sigma_normal': ['soll sigma'],
|
||||||
|
'extension': ['soll extension'],
|
||||||
|
'F': ['vertical load from hydraulic pressure'],
|
||||||
|
's_vert_1': ['Vertical position from LVDT 1'],
|
||||||
|
's_vert_2': ['Vertical position from LVDT 2'],
|
||||||
|
's_piston': ['vertical position from hydraulic pressure'],
|
||||||
|
'N': ['Number of vertical cycles'],
|
||||||
|
}
|
||||||
|
|
||||||
|
def _process_data(self):
|
||||||
|
|
||||||
|
meta, data = read_geosys(
|
||||||
|
self.data, '015', metadata_ids=['001', '003', '005', '007', '009'])
|
||||||
|
|
||||||
|
#convert sigma
|
||||||
|
f = 900.0 / 355.0
|
||||||
|
data['soll sigma'] = data['soll sigma'].mul(f)
|
||||||
|
|
||||||
|
#define in class
|
||||||
|
self.data = data.reset_index()
|
||||||
|
self.metadata.update(meta)
|
||||||
|
|
||||||
|
# log infos
|
||||||
|
self._logger.info(self.metadata)
|
||||||
|
self._logger.info(self.data.head())
|
||||||
Reference in New Issue
Block a user