From f8f4a3f83a84930d711e981f8f9359bf2b9185e9 Mon Sep 17 00:00:00 2001 From: Eduard Friske <eduard.friske@ptb.de> Date: Tue, 25 Jun 2024 12:22:13 +0200 Subject: [PATCH] =?UTF-8?q?Stand=2020240625,=20diverse=20=C3=84nderungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Scan.pdf | Bin 0 -> 37886 bytes attachment_cer.py | 12 +- file-to-couchdb_TLA.py | 11 +- file-to-couchdb_tl1.py | 33 +++-- file-to-couchdb_tl2_bosch.py | 215 +++++++++++++++++++++++++++++ inputs.ini | 10 +- lw-to-couchdb_tlv.py | 261 +++++++++++++++++++++++++++++++++++ out.csv | 117 ++++++++++++++++ tl.ini | 2 +- writeLaTeX-ks-TLA.py | 18 +-- 10 files changed, 637 insertions(+), 42 deletions(-) create mode 100644 Scan.pdf create mode 100644 file-to-couchdb_tl2_bosch.py create mode 100644 lw-to-couchdb_tlv.py create mode 100644 out.csv diff --git a/Scan.pdf b/Scan.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3a15f1d300161475ac3717f29754c541c43fc6ff GIT binary patch literal 37886 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 H-;E0ZaFO-D literal 0 HcmV?d00001 diff --git a/attachment_cer.py b/attachment_cer.py index 89e4abb..ef8907d 100644 --- a/attachment_cer.py +++ b/attachment_cer.py @@ -19,7 +19,9 @@ except ImportError: configtl1 = ConfigParser() ini_values = ConfigParser() # parse existing file -configtl1.read('tl1.ini') +configtl1.read('tl.ini') +#print(configtl1.sections()) +#print(configtl1) ini_values.read('inputs.ini') # read values from a section @@ -27,7 +29,7 @@ cal_cert = ini_values.get('input_cer', 'cal_cert') year = ini_values.get('input_gen', 'year') year_str2=year[2:] no = ini_values.get('input_gen', 'no') -path=configtl1.get('path', 'path') +path=Path(configtl1.get('path', 'path')) server=configtl1.get('couch', 'couch') db_vl=configtl1.get('couch', 'db') @@ -45,6 +47,7 @@ print(RefNo) doc_RefNo = db.get(RefNo) cers =doc_RefNo["Bureaucracy"]["Certificate"] +print(cers) @@ -124,9 +127,4 @@ for cers_i in cers: ks_aux.unlink(missing_ok= True) ks_log.unlink(missing_ok= True) ks_gz.unlink(missing_ok= True) - -<<<<<<< HEAD -======= - i += 1 ->>>>>>> ebf93a9ace9e40821f2458dbdfad5bd91f7059e8 diff --git a/file-to-couchdb_TLA.py b/file-to-couchdb_TLA.py index a2c7f2a..27432cf 100644 --- a/file-to-couchdb_TLA.py +++ b/file-to-couchdb_TLA.py @@ -64,10 +64,10 @@ path=Path(config["Pfad"]["Messwerte"]) #print(path.exists()) #datei = path.joinpath(year + ".json") -datei = path.joinpath(cal_cert + "PTB" + year) +datei = path.joinpath(cal_cert + "_" + no + "PTB" + year) #datei = "file://fs.isc.pad.ptb.de/fs/Abt7/Fb75/Vakuum/Messplaetze/TL2/Messwerte/75556PTB2024" #print(datei, datei.exists(), datei.stat()) -datei_S = path.joinpath(cal_cert + "PTB" + year + "_S") +datei_S = path.joinpath(cal_cert + "_" + no + "PTB" + year + "_S") print(json_file) #exit() @@ -93,7 +93,8 @@ T_wv=datei_pkt["T-WV"] T_tl=datei_pkt["T-TL"] T_rv=datei_pkt["T-RV"] p_atm=datei_pkt["Umgebungsdruck p_0"]*100 # Umrechnung in Pa - +d= datei_pkt["d"] +#print(d) m1_drift = datei_pkt["m1_D"] m2_drift = datei_pkt["m2_D"] @@ -152,8 +153,9 @@ lis_l1 = l_1.tolist() lis_l2 = l_2.tolist() lis_t1 = t_1.tolist() lis_t2 = t_2.tolist() +lis_d = d.tolist() -print(lis_l1 ,lis_l2 ,lis_t1 ,lis_t2 ) +print(lis_l1 ,lis_l2 ,lis_t1 ,lis_t2) datum_meas = lis_date[0:1] @@ -174,6 +176,7 @@ doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type" {"Unit": "s","Type": "Zeit des zweiten Saegezahns","Value": lis_t2}], "L": [{"Unit": "mm","Type": "Hub des ersten Saegezahns","Value": lis_l1}, {"Unit": "mm","Type": "Hub des zweiten Saegezahns","Value": lis_l2}], + "D": [{"Unit": "mm","Type": "nomineller Nadeldurchmesser","Value": lis_d}], "Drift": [{"Unit": "Pa/s","Type": "Steigung des ersten Saegezahns","Value": lis_m1_sz}, {"Unit": "Pa/s","Type": "Steigung des zweiten Saegezahns","Value": lis_m2_sz}, {"Unit": "Pa/s","Type": "Drift des ersten Saegezahns","Value": lis_m1_drift}, diff --git a/file-to-couchdb_tl1.py b/file-to-couchdb_tl1.py index 3b032c5..4776e5c 100644 --- a/file-to-couchdb_tl1.py +++ b/file-to-couchdb_tl1.py @@ -537,15 +537,15 @@ if L == 1 : lis_h = h.tolist() - doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-FM","Comment":"Temperatur T ","Value": lis_T_fm}, + doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-FM","Comment":"Temperatur T","Value": lis_T_fm}, {"Unit": "C","Type": "T-Room","Comment":"Temperatur T","Value": lis_T_room}, {"Unit": "C","Type": "T-TL1","Comment":"Temperatur T","Value": lis_T_tl1}, {"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl2}, - {"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl3}, - {"Unit": "C","Type": "T-TL3","Comment":"Temperatur T","Value": lis_T_tl4}], + {"Unit": "C","Type": "T-TL3","Comment":"Temperatur T","Value":lis_T_tl3}, + {"Unit": "C","Type": "T-TL4","Comment":"Temperatur T","Value": lis_T_tl4}], "Pressure": [{"Unit": "Pa","Type": "Offset pressure","Value":lis_p_offs}, - {"Unit": "Pa","Type": "pressure mean","Value":lis_p_fill}, - {"Unit": "bar","Type": "TL1 pressure ","Value":lis_p_ig}], + {"Unit": "Pa","Type": "Fill pressure","Value":lis_p_fill}, + {"Unit": "bar","Type": "TL1 pressure","Value":lis_p_ig}], "Date": [{"Unit": "year-month-day","Type": "Datum","Value":lis_datum}, {"Unit": "hh:mm:ss","Type": "Messzeit","Value":lis_time}], "Valve": [{"Unit": "1","Type": "Connection", "Comment":"Connection of the leak" ,"Value":lis_valve}], @@ -570,7 +570,7 @@ if L == 1 : "m": [{"Unit": "Pa/s","Type": "m1","Comment":"Steigung m1 des 1.SZ","Value": lis_m1}, {"Unit": "Pa/s","Type": "m2","Comment":"Steigung m1 des 2.SZ","Value": lis_m2}, {"Unit": "Pa/s","Type": "m3","Comment":"Steigung m1 des 3.SZ","Value": lis_m3}, - {"Unit": "Pa/s","Type": "m3","Comment":"Steigung m1 des 4.SZ","Value": lis_m3}], + {"Unit": "Pa/s","Type": "m4","Comment":"Steigung m1 des 4.SZ","Value": lis_m4}], "pressure": [{"Unit": "Pa","Type": "pmean","Comment":"Mittelwert von p","Value": lis_pmean}, {"Unit": "Pa","Type": "pmin","Comment":"p_min des SZ","Value": lis_pmin}, {"Unit": "Pa","Type": "pmax","Comment":"p_max des SZ","Value": lis_pmax}], @@ -591,17 +591,17 @@ else: lis_c = L_ar.tolist() if gauge == 0.01 : - doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-FM ","Comment":"Temperatur T ","Value": lis_T_fm}, + doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-FM","Comment":"Temperatur T","Value": lis_T_fm}, {"Unit": "C","Type": "T-Room","Comment":"Temperatur T","Value": lis_T_room}, {"Unit": "C","Type": "T-TL1","Comment":"Temperatur T","Value": lis_T_tl1}, {"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl2}, - {"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl3}, - {"Unit": "C","Type": "T-TL3","Comment":"Temperatur T","Value": lis_T_tl4}], + {"Unit": "C","Type": "T-TL3","Comment":"Temperatur T","Value":lis_T_tl3}, + {"Unit": "C","Type": "T-TL4","Comment":"Temperatur T","Value": lis_T_tl4}], "Pressure": [{"Unit": "DCR","Type": "Offset pressure SRG","Value":lis_p_offs_srg}, - {"Unit": "DCR","Type": "Fill pressure SRG ","Value":lis_p_fill_srg}, + {"Unit": "DCR","Type": "Fill pressure SRG","Value":lis_p_fill_srg}, {"Unit": "Pa","Type": "Offset pressure 01Torr","Value":lis_p_offs_01}, {"Unit": "Pa","Type": "Fill pressure 01Torr","Value":lis_p_fill_01}, - {"Unit": "mbar","Type": "TL1 pressure ","Value":lis_p_ig}], + {"Unit": "mbar","Type": "TL1 pressure","Value":lis_p_ig}], "Date": [{"Unit": "year-month-day","Type": "Datum","Value":lis_datum}, {"Unit": "hh:mm:ss","Type": "Messzeit","Value":lis_time}], "Valve": [{"Unit": "1","Type": "Connection", "Comment":"Connection of the leak" ,"Value":lis_valve}], @@ -616,15 +616,14 @@ else: print("SRG") else: - doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-FM","Comment":"Temperatur T ","Value": lis_T_fm}, + doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-FM","Comment":"Temperatur T","Value": lis_T_fm}, {"Unit": "C","Type": "T-Room","Comment":"Temperatur T","Value": lis_T_room}, {"Unit": "C","Type": "T-TL1","Comment":"Temperatur T","Value": lis_T_tl1}, {"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl2}, - {"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl3}, - {"Unit": "C","Type": "T-TL3","Comment":"Temperatur T","Value": lis_T_tl4}], + {"Unit": "C","Type": "T-TL3","Comment":"Temperatur T","Value":lis_T_tl3}, + {"Unit": "C","Type": "T-TL4","Comment":"Temperatur T","Value": lis_T_tl4}], "Pressure": [{"Unit": "Pa","Type": "Offset pressure","Value":lis_p_offs}, - {"Unit": "Pa","Type": " pressure fill","Value":lis_p_fill}, - + {"Unit": "Pa","Type": "Fill pressure","Value":lis_p_fill}, {"Unit": "mbar","Type": "TL1 pressure","Value":lis_p_ig}], "Date": [{"Unit": "year-month-day","Type": "Datum","Value":lis_datum}, {"Unit": "hh:mm:ss","Type": "Messzeit","Value":lis_time}], @@ -678,7 +677,7 @@ doc["Calibration"]["Measurement"]["AuxValues"]={"ScanQMS": [{"Unit": "Mass","Typ # "DefQMS": [{"Type": "Scan QMS ","Value":key_value}, # {"Type": "Scan Offset QMS","Value": key_value_offs}]} -#db.save(doc) +db.save(doc) content=pathlib.Path('Scan.pdf').read_bytes() diff --git a/file-to-couchdb_tl2_bosch.py b/file-to-couchdb_tl2_bosch.py new file mode 100644 index 0000000..1335219 --- /dev/null +++ b/file-to-couchdb_tl2_bosch.py @@ -0,0 +1,215 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Jul 1 12:12:37 2022 + +@author: becker07 +""" + +from matplotlib import pyplot as plt +from statistics import mean +from datetime import datetime +from IPython.display import Markdown as md +import numpy as np +import math +import statistics +import pandas as pd +import json +import couchdb +couch = couchdb.Server('http://a73434.berlin.ptb.de:5984') +db = couch['vl_db'] # existing + + +## Eingabe von: +# - Kalibrierscheinnummer +# - Jahr der Kalibrierung +# - laufende Nummer der Kalibrierung + + + +cal_cert = "75582" +year = "2024" +no = "0001" + + +json_file = "cal-" + year + "-tl2-kk-" + cal_cert + "_" + no +doc = db.get(json_file) + +# Die Daten aus dem File mit der entsprechenden Kalibrierscheinnummer werden eingelesen: +# datum, time, p_up und alle Temperaturen, +path='N:\\Abt_7\\Fb75\\Vakuum\\Messplaetze\\TL2\\Messwerte\\' +path='/home/friske01/N/Abt_7/Fb75/Vakuum/Messplaetze/TL2/Messwerte/' +datei = path + cal_cert + '_'+ no + "PTB" + year +datei_S = path + cal_cert + '_'+ no +"PTB" + year + "_S" +print(json_file) + +datei_pkt = pd.read_csv(datei, sep="\t", decimal = ',' ) +datei_S_pkt = pd.read_csv(datei_S, sep="\t", decimal = ',' ) + + +df = pd.read_csv(datei_S, sep="\t", decimal = ',' ) +df.to_csv('out.csv', index=False) + +df = pd.read_csv('out.csv') +time_sz=df["Zeit"] + + +l = len(df) +time_n = time_sz[l-2] +print(time_n) + +i=0 + +while i < l-1 : + + print(time_sz[i]) + time=[time_sz[i]] + + if time_sz[i] == time_sz[i+1]: + i=i+2 + else: + print('nur eine zeile', i) + zeile = df.loc[[i]] + df1 = df.loc [0:i, ] + df3 = df.loc [i+1:, ] + dfx= pd.concat([df1,zeile], axis=0) + df= pd.concat([dfx,df3], axis=0) + df.to_csv('out.csv', index=False) + print(i) + if time_sz[i] == time_n: + i=l + else: + l=l+2 + i=i+1 + print(i,l) + +df = pd.read_csv('out.csv') +time_sz=df["Zeit"] +l = len(df) +time1 = time_sz[l-1] + +time2 = time_sz[l-2] +print(time2) + +print(time1,time2) + +if time1 == time2: + print('ende') +else: + zeile = df.loc[[l-1]] + print(zeile) + df= pd.concat([df,zeile], axis=0) + df.to_csv('out.csv', index=False) + + +l = df['h_i'] +t = df['t_i'] +m_sz_i = df['m_i'] + + + + +l_1 = l[0:len(l):2] # Jede zweite Zeile im Bereich 0 bis n wählen. +l_2 = l[1:len(l):2] # Jede zweite Zeile im Bereich 1 bis n wählen. + +t_1 = t[0:len(t):2] # Jede zweite Zeile im Bereich 0 bis n wählen. +t_2 = t[1:len(t):2] # Jede zweite Zeile im Bereich 1 bis n wählen. + +m_sz_1 = m_sz_i[0:len(m_sz_i):2] # Jede zweite Zeile im Bereich 0 bis n wählen. +m_sz_2 = m_sz_i[1:len(m_sz_i):2] # Jede zweite Zeile im Bereich 1 bis n wählen. + +datum=datei_pkt["Datum"] +time=datei_pkt["Zeit"] +time_sz=datei_pkt["Zeit"] + + + + +p_up=datei_pkt["Druck"] +D=datei_pkt["d"] +#sh=datei_pkt["sh "] + +p_up=np.array(p_up) +p_up = np.asarray(p_up, dtype=float) + +q_tab=datei_pkt["q_mol"] +T_room=datei_pkt["Raumtemperatur"] +T_h2o=datei_pkt["T-H2O"] +T_wv=datei_pkt["T-WV"] +T_tl=datei_pkt["T-TL"] +T_rv=datei_pkt["T-RV"] +p_atm=datei_pkt["Umgebungsdruck p_0"]*100 # Umrechnung in Pa + +# Die Werte der Sägezähne befinden sich im File "Kalibrierscheinnummer_S". +# Da pro Messpunkt 2 Sägezähne gefahren werden, existieren auch für jeden Messpunkt +# jeweils zwei Zeiten t_i und zwei Hübe l_1 + + +m1_drift = datei_pkt["m1_D"] +m2_drift = datei_pkt["m2_D"] +# Im File Datei_S sind die einzelnen Hübe l_i der Nadel in einer Spalte gespeichert, der Hub l +# muss daher in Hub l_1 und l_2 aufgegliedert werden, da in der Regel 2 Sägezähne gefahren werden. + + +# Temperatur +lis_T_h2o = T_h2o.tolist() +lis_T_room = T_room.tolist() +lis_T_tl = T_tl.tolist() +lis_T_wv = T_wv.tolist() +lis_T_rv = T_rv.tolist() +# Druck +lis_p_atm = p_atm.tolist() +lis_p_up = p_up.tolist() +# Drift +lis_m1_drift = m1_drift.tolist() +lis_m2_drift = m2_drift.tolist() +lis_m1_sz = m_sz_1.tolist() +lis_m2_sz = m_sz_2.tolist() +# Datum +lis_date = datum.tolist() +lis_dtime = time.tolist() + +lis_l1 = l_1.tolist() +lis_l2 = l_2.tolist() +lis_t1 = t_1.tolist() +lis_t2 = t_2.tolist() + +lis_d = D.tolist() +#lis_sh = sh.tolist() + +print(lis_l1 ,lis_l2 ,lis_t1 ,lis_t2 ) + +datum_meas = lis_date[0:1] + + +print(lis_T_room) + + + +doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-H2O","Comment":"Temperatur T ","Value": lis_T_h2o}, + {"Unit": "C","Type": "T-Room","Comment":"Temperatur T","Value": lis_T_room}, + {"Unit": "C","Type": "T-TL","Comment":"Temperatur T","Value": lis_T_tl}, + {"Unit": "C","Type": "T-WV","Comment":"Temperatur T","Value": lis_T_wv}, + {"Unit": "C","Type": "T-RV","Comment":"Temperatur T","Value": lis_T_rv}], + "Pressure": [{"Unit": "Pa","Type": "Atmosparic pressure","Value": lis_p_atm}, + {"Unit": "bar","Type": "Upstream pressure","Value": lis_p_up}], + "Time": [{"Unit": "s","Type": "Zeit des ersten Saegezahns","Value": lis_t1}, + {"Unit": "s","Type": "Zeit des zweiten Saegezahns","Value": lis_t2}], + "L": [{"Unit": "mm","Type": "Hub des ersten Saegezahns","Value": lis_l1}, + {"Unit": "mm","Type": "Hub des zweiten Saegezahns","Value": lis_l2}], + "D": [{"Unit": "mm","Type": "nomineller Nadeldurchmesser","Value": lis_d}], + #"SH": [{"Unit": "1","Type": "Anzahl SZ","Value": lis_sh}], + "Drift": [{"Unit": "Pa/s","Type": "Steigung des ersten Saegezahns","Value": lis_m1_sz}, + {"Unit": "Pa/s","Type": "Steigung des zweiten Saegezahns","Value": lis_m2_sz}, + {"Unit": "Pa/s","Type": "Drift des ersten Saegezahns","Value": lis_m1_drift}, + {"Unit": "Pa/s","Type": "Drift des zweiten Saegezahns","Value": lis_m2_drift}], + "DateTime": [{"Unit": "yyyy-mm-dd","Type": "Date","Value": lis_date}, + {"Unit": "hh:mm","Type": "Time ","Value": lis_dtime}]} + + + +doc["Calibration"]["Measurement"]["Date"]=[{"Type": "measurement","Value":datum_meas}] + + +db.save(doc) + + diff --git a/inputs.ini b/inputs.ini index 07bcf55..66d1029 100644 --- a/inputs.ini +++ b/inputs.ini @@ -1,16 +1,16 @@ [input_cer] -#Beispiel für cal_cert : cal_cert = 75560 -cal_cert = 75601 +#Beispiel für cal_cert : cal_cert = 75562 +cal_cert = 75627 #Beispiel für api_cert : api_cert = 75560_0001,75561_0001 -api_cert = 75601_0002 +api_cert = 75627 [input_gen] year = 2024 -no = 0002 +no = 0001 [bur] -RefNo = 9 +RefNo = 23 # Verwendung für die python-scripte: API und attachment [labbook] diff --git a/lw-to-couchdb_tlv.py b/lw-to-couchdb_tlv.py new file mode 100644 index 0000000..d3e889c --- /dev/null +++ b/lw-to-couchdb_tlv.py @@ -0,0 +1,261 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Jul 1 12:12:37 2022 + +@author: becker07 +""" +import sys +import numpy as np +import couchdb +import pandas as pd +import json +import csv +import re +from matplotlib import pyplot as plt +import pathlib + +try: + from configparser import ConfigParser +except ImportError: + from ConfigParser import ConfigParser # ver. < 3.0 + + +configtl = ConfigParser() +ini_values = ConfigParser() +# parse existing file +configtl.read('tl.ini') +ini_values.read('inputs.ini') + +server=configtl.get('couch', 'couch') +db_vl=configtl.get('couch', 'db') + +couch = couchdb.Server(server) +db = couch[db_vl] # existing + + +## Eingabe von: +# - Kalibrierscheinnummer +# - Jahr der Kalibrierung +# - laufende Nummer der Kalibrierung + +path=configtl.get('path', 'path_files') + + + +cal_cert = ini_values.get('input_cer', 'cal_cert') +year = ini_values.get('input_gen', 'year') +no = ini_values.get('input_gen', 'no') +QMS="ja" ######### ja beim Scan +kk_ik_pn= "kk" ######## kk,ik oder pn + + + +json_file = "cal-" + year + "-fm1-ik-" + cal_cert + "_" + no +doc = db.get(json_file) +print(json_file) + +#path='C:\\Users\\becker07\\python\\TL1\\' + +dateiTab = path + cal_cert + "_" + no +#dateiTab='C:\\Users\\becker07\\python\\TL1\\75561' +print(dateiTab) + + +dateiTab=pd.read_csv(dateiTab, sep="\t", decimal = ',' ) + +L_ar=dateiTab["C "] +print('Leitwert j= 1, nein = 0 :: ', L_ar) + +L=L_ar[0] +print('Leitwert : ',L) + + +#gauge = float(doc["Calibration"]["CustomerObject"]["Setup"]["CDG"]) +gauge = 10 +print(gauge) + +# Die Daten aus dem File mit der entsprechenden Kalibrierscheinnummer werden eingelesen: +# datum, time, p_up und alle Temperaturen, + + +#datei = "N:\Abt_7\Fb75\Vakuum\Messplaetze\TL1\Kalibrierungen\\22\\TP7464.txt" + +if True: + + + m1=dateiTab["m1"] + m2=dateiTab["m2"] + m3=dateiTab["m3"] + m4=dateiTab["m4"] + + t1=dateiTab["t1"] + t2=dateiTab["t2"] + t3=dateiTab["t3"] + t4=dateiTab["t4"] + time1=dateiTab["time1"] + time2=dateiTab["time2"] + time3=dateiTab["time3"] + + pmean=dateiTab["p-mean"]*100 + pmin=dateiTab["p-min"]*100 + pmax=dateiTab["p-max"]*100 + + + h=dateiTab["distance"] + + + print("Constantes Volumen",h) + + + +else: + print("Constanter Leitwert") + + +datum=dateiTab["Datum"] +time=dateiTab["Zeit"] +gas=dateiTab["Gasart"] + +if gauge== 0.01 : + p_offs_01=dateiTab["p-offset"]*100 + p_fill_01=dateiTab["p-fill "]*100 + p_fill_srg=dateiTab["p-max"] + p_offs_srg=dateiTab["p-min"] + +else : + p_offs=dateiTab["p-offset"]*100 + p_fill=dateiTab["p-fill "]*100 +#p_fill=np.genfromtxt(dateiTab,skip_header=1,delimiter='\t',usecols=(5)) + +p_ig=dateiTab["Kommentar"] +T_room=dateiTab["T-Raum"] +T_fm=dateiTab["T-FM"] +T_tl1=dateiTab["T-TL1"] +T_tl2=dateiTab["T-TL2"] +T_tl3=dateiTab["T-TL3"] +T_tl4=dateiTab["T-TL4"] + +#print(T_fm,T_room,T_tl1, T_tl2,T_tl3,T_tl4) + + +# Temperatur +lis_T_fm = T_fm.tolist() +lis_T_room = T_room.tolist() +lis_T_tl1 = T_tl1.tolist() +lis_T_tl2 = T_tl2.tolist() +lis_T_tl3 = T_tl3.tolist() +lis_T_tl4 = T_tl4.tolist() + + +# Druck + +if gauge == 0.01 : + lis_p_offs_01 = p_offs_01.tolist() + lis_p_fill_01 = p_fill_01.tolist() + lis_p_offs_srg = p_offs_srg.tolist() + lis_p_fill_srg = p_fill_srg.tolist() + + + +else: + lis_p_offs = p_offs.tolist() + lis_p_fill = p_fill.tolist() + + + +lis_p_ig = p_ig.tolist() +# Datum +# Datum +lis_datum = datum.tolist() +lis_time = time.tolist() + + +datum_meas = lis_datum[0:1] + + + + +if True: + #Leitwert + lis_c = L_ar.tolist() + + # Steigung SZ + lis_m1 = m1.tolist() + lis_m2 = m2.tolist() + lis_m3 = m3.tolist() + lis_m4 = m4.tolist() + + # Zeitpunkte + lis_t1 = t1.tolist() + lis_t2 = t2.tolist() + lis_t3 = t3.tolist() + lis_t4 = t4.tolist() + + # Zeit pro SZ + lis_time1 = time1.tolist() + lis_time2 = time2.tolist() + lis_time3 = time3.tolist() + + # Druck der SZ + lis_pmean = pmean.tolist() + lis_pmin = pmin.tolist() + lis_pmax= pmax.tolist() + + # Druck der SZ + lis_h = h.tolist() + + + doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-FM","Comment":"Temperatur T ","Value": lis_T_fm}, + {"Unit": "C","Type": "T-Room","Comment":"Temperatur T","Value": lis_T_room}, + {"Unit": "C","Type": "T-TL1","Comment":"Temperatur T","Value": lis_T_tl1}, + {"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl2}, + {"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl3}, + {"Unit": "C","Type": "T-TL3","Comment":"Temperatur T","Value": lis_T_tl4}], + "Pressure": [{"Unit": "Pa","Type": "Offset pressure","Value":lis_p_offs}, + {"Unit": "Pa","Type": "pressure mean","Value":lis_p_fill}], + "Date": [{"Unit": "year-month-day","Type": "Datum","Value":lis_datum}, + {"Unit": "hh:mm:ss","Type": "Messzeit","Value":lis_time}] + } +# print(doc["Calibration"]["Measurement"]["Values"]) + + + + doc["Calibration"]["Measurement"]["Date"]=[{"Type": "measurement","Value": datum_meas}] + + doc["Calibration"]["Measurement"]["Values"]["Conductance"]={"t": [{"Unit": "s","Type": "t1","Comment":"Zeitpunkt t1 des 1.SZ","Value": lis_t1}, + {"Unit": "s","Type": "t2","Comment":"Zeitpunkt t2 des 2.SZ","Value": lis_t2}, + {"Unit": "s","Type": "t3","Comment":"Zeitpunkt t3 des 3.SZ","Value": lis_t3}, + {"Unit": "s","Type": "t4","Comment":"Zeitpunkt t4 des 4.SZ","Value": lis_t4}], + "time": [{"Unit": "s","Type": "time1","Comment":"Zeit t2-t1 von SZ","Value": lis_time1}, + {"Unit": "s","Type": "time2","Comment":"Zeit t3-t2 von SZ","Value": lis_time2}, + {"Unit": "s","Type": "time3","Comment":"Zeit t4-t3 von SZ","Value": lis_time3}], + "m": [{"Unit": "Pa/s","Type": "m1","Comment":"Steigung m1 des 1.SZ","Value": lis_m1}, + {"Unit": "Pa/s","Type": "m2","Comment":"Steigung m1 des 2.SZ","Value": lis_m2}, + {"Unit": "Pa/s","Type": "m3","Comment":"Steigung m1 des 3.SZ","Value": lis_m3}, + {"Unit": "Pa/s","Type": "m3","Comment":"Steigung m1 des 4.SZ","Value": lis_m3}], + "pressure": [{"Unit": "Pa","Type": "pmean","Comment":"Mittelwert von p","Value": lis_pmean}, + {"Unit": "Pa","Type": "pmin","Comment":"p_min des SZ","Value": lis_pmin}, + {"Unit": "Pa","Type": "pmax","Comment":"p_max des SZ","Value": lis_pmax}], + "l": [{"Unit": "mm","Type": "l","Comment":"Hub des Verdrängers","Value": lis_h}], + "C": [{"Unit": "m^3/s","Type": "Constanter Leitwert ","Value": lis_c}] + + } + + + + + + print("Constantes Volumen") + + + + + + +doc["Calibration"]["Measurement"]["Date"]=[{"Type": "measurement","Value": datum_meas}] + + +db.save(doc) + + + diff --git a/out.csv b/out.csv new file mode 100644 index 0000000..dfee2db --- /dev/null +++ b/out.csv @@ -0,0 +1,117 @@ +Datum,Zeit,h_i,t_i,b_i,pos1_i,m_i,pos2_i +2024-06-07,10:56 ,3.000005,29.8418211,-149.74933,48.0,3.64013766,44.999995 +2024-06-07,10:56 ,3.000009,29.8543906,-149.82995,44.999999,3.64130542,41.99999 +2024-06-07,11:04 ,3.000008,29.9963951,-148.91506,48.0,3.62223738,44.999992 +2024-06-07,11:04 ,3.000009,29.8804367,-148.50456,44.999999,3.6225564,41.99999 +2024-06-07,11:13 ,3.000005,30.1808797,-149.53121,48.0,3.58224188,44.999995 +2024-06-07,11:13 ,3.000009,30.4745003,-150.3599,44.999999,3.57491999,41.99999 +2024-06-07,11:23 ,3.000008,30.7240212,-153.02236,48.0,3.54394899,44.999992 +2024-06-07,11:23 ,3.000009,30.8445062,-152.79717,44.999999,3.52280466,41.99999 +2024-06-07,11:33 ,3.000005,31.1874242,-151.05361,48.0,3.48302604,44.999995 +2024-06-07,11:33 ,3.000002,31.3229508,-151.29232,44.999999,3.47557682,41.999997 +2024-06-07,11:42 ,3.000008,31.560344,-150.95359,48.0,3.44047555,44.999992 +2024-06-07,11:42 ,3.000009,31.7825578,-151.40787,44.999999,3.4307144,41.99999 +2024-06-07,11:52 ,3.000008,32.1141862,-152.85104,48.0,3.38317918,44.999992 +2024-06-07,11:52 ,3.000009,32.2056306,-152.79312,44.999999,3.37177464,41.99999 +2024-06-07,12:02 ,3.000005,32.5242424,-152.19191,48.0,3.33950642,44.999995 +2024-06-07,12:02 ,3.000002,32.543621,-151.99215,44.999999,3.33137952,41.999997 +2024-06-07,12:12 ,3.000008,33.0109309,-152.62936,48.0,3.29128437,44.999992 +2024-06-07,12:12 ,3.000005,33.0865171,-152.39961,44.999999,3.27682176,41.999994 +2024-06-07,12:21 ,3.000008,33.6149704,-153.42164,48.0,3.24363346,44.999992 +2024-06-07,12:21 ,3.000002,33.7722813,-153.46169,44.999999,3.22971049,41.999997 +2024-06-07,02:33 ,5.000005,27.3818092,-198.72597,48.0,6.57173424,42.999995 +2024-06-07,02:33 ,5.000005,27.4215444,-198.52599,42.999999,6.55491867,37.999994 +2024-06-07,02:42 ,5.000005,28.0919744,-202.22123,48.0,6.4414566,42.999995 +2024-06-07,02:42 ,5.000005,28.0146076,-201.40891,42.999999,6.43024926,37.999994 +2024-06-07,02:52 ,5.000008,28.7980029,-200.24505,48.0,6.32491963,42.999992 +2024-06-07,02:52 ,5.000005,28.6643156,-199.49139,42.999999,6.32812583,37.999994 +2024-06-07,03:01 ,5.000005,29.1365048,-202.8938,48.0,6.22956702,42.999995 +2024-06-07,03:01 ,5.000009,29.1698382,-201.76309,42.999999,6.18368527,37.99999 +2024-06-07,03:11 ,5.000008,29.6993201,-201.15099,48.0,6.12125118,42.999992 +2024-06-07,03:11 ,5.000005,29.7407254,-200.04998,42.999999,6.07570861,37.999994 +2024-06-07,03:21 ,5.000001,30.2977441,-206.1357,48.0,5.99264774,42.999999 +2024-06-07,03:21 ,5.000009,30.0955158,-204.29856,42.999999,5.97187177,37.99999 +2024-06-07,03:31 ,5.000005,30.8453427,-201.82768,48.0,5.87562556,42.999995 +2024-06-07,03:31 ,5.000009,30.8981522,-202.09143,42.999999,5.87411927,37.99999 +2024-06-07,03:47 ,7.000008,25.5636285,-267.71595,48.0,9.98746942,40.999992 +2024-06-07,03:47 ,7.000005,25.1494489,-262.36184,40.999999,9.93905864,33.999994 +2024-06-07,03:56 ,7.000008,25.6073633,-263.11251,48.0,9.87729632,40.999992 +2024-06-07,03:56 ,7.000005,25.7095739,-263.09799,40.999999,9.83746364,33.999994 +2024-06-07,04:06 ,7.000008,26.0145631,-268.02958,48.0,9.8063761,40.999992 +2024-06-07,04:06 ,7.000005,25.6296707,-264.32952,40.999999,9.80927661,33.999994 +2024-06-07,04:15 ,7.000005,25.9228132,-265.36161,48.0,9.7704912,40.999995 +2024-06-07,04:15 ,7.000001,25.8186338,-263.542,40.999999,9.73943896,33.999998 +2024-06-07,04:25 ,7.000008,26.1091432,-265.17538,48.0,9.70653791,40.999992 +2024-06-07,04:25 ,7.000005,26.0494753,-265.51919,40.999999,9.74196963,33.999994 +2024-06-07,04:34 ,7.000008,26.1629062,-266.02522,48.0,9.74999568,40.999992 +2024-06-07,04:34 ,7.000005,25.8150491,-261.35683,40.999999,9.70053665,33.999994 +2024-06-07,04:44 ,7.000008,26.2547451,-268.74098,48.0,9.70338839,40.999992 +2024-06-07,04:44 ,7.000005,26.1760111,-267.18944,40.999999,9.67330121,33.999994 +2024-06-10,09:49 ,11.000004,28.3909416,-409.32224,48.0,13.9129322,36.999996 +2024-06-10,09:49 ,11.000004,28.3909416,-409.32224,48.0,13.9129322,36.999996 +2024-06-10,10:03 ,10.000006,26.098329,-377.97784,48.0,13.9217281,37.999994 +2024-06-10,10:03 ,10.000006,26.0025944,-371.28724,38.000001,13.7156794,27.999995 +2024-06-10,10:12 ,10.000006,26.1149797,-379.45957,48.0,13.8789913,37.999994 +2024-06-10,10:12 ,10.000006,26.003001,-376.00002,38.000001,13.8057152,27.999995 +2024-06-10,10:22 ,10.00001,26.2187312,-377.19986,48.0,13.8831609,37.99999 +2024-06-10,10:22 ,10.000003,26.0808411,-373.87039,38.000001,13.8289017,27.999998 +2024-06-10,10:31 ,10.000006,26.1548925,-377.31186,48.0,13.9202968,37.999994 +2024-06-10,10:31 ,10.00001,25.7029933,-372.19965,38.000001,13.9661419,27.999991 +2024-06-10,10:40 ,10.000006,26.0409257,-376.29786,48.0,13.8924731,37.999994 +2024-06-10,10:40 ,10.000006,25.9870763,-373.77285,38.000001,13.8240964,27.999995 +2024-06-10,10:50 ,10.000006,26.0962861,-381.02027,48.0,14.0181737,37.999994 +2024-06-10,10:50 ,10.000006,26.0078428,-375.44211,38.000001,13.8513647,27.999995 +2024-06-10,10:59 ,10.000006,25.9050031,-380.9845,48.0,14.098956,37.999994 +2024-06-10,10:59 ,10.000006,25.9602504,-374.01521,38.000001,13.8004912,27.999995 +2024-06-10,11:09 ,10.000006,25.8607768,-380.0491,48.0,14.0559621,37.999994 +2024-06-10,11:09 ,10.000006,25.7020852,-372.21112,38.000001,13.8377927,27.999995 +2024-06-10,11:18 ,10.000006,25.9649933,-376.51122,48.0,13.9257584,37.999994 +2024-06-10,11:18 ,10.000006,25.5644139,-372.15657,38.000001,13.9736264,27.999995 +2024-06-10,11:28 ,10.000006,25.9392357,-381.53028,48.0,14.160297,37.999994 +2024-06-10,11:28 ,10.000006,25.7686629,-371.61666,38.000001,13.8693133,27.999995 +2024-06-10,11:37 ,10.000006,25.9203043,-384.06857,48.0,14.2023246,37.999994 +2024-06-10,11:37 ,10.000006,25.7242647,-375.66172,38.000001,13.9837513,27.999995 +2024-06-10,11:47 ,10.000006,25.7779924,-382.91781,48.0,14.1640902,37.999994 +2024-06-10,11:47 ,10.000006,25.5447809,-372.49594,38.000001,13.8854172,27.999995 +2024-06-10,11:56 ,10.000006,25.8228311,-385.51928,48.0,14.3976579,37.999994 +2024-06-10,11:56 ,10.000006,25.9397932,-371.76567,38.000001,13.8025263,27.999995 +2024-06-10,12:06 ,10.000006,25.9073711,-380.31857,48.0,14.0569868,37.999994 +2024-06-10,12:06 ,10.000006,25.720718,-377.96644,38.000001,14.0675482,27.999995 +2024-06-10,12:15 ,10.000006,25.9599848,-380.4137,48.0,14.0466068,37.999994 +2024-06-10,12:15 ,10.000006,25.836866,-374.99699,38.000001,13.9038918,27.999995 +2024-06-10,12:24 ,10.000006,26.0545574,-382.51607,48.0,14.1167652,37.999994 +2024-06-10,12:24 ,10.000006,25.9666584,-373.12609,38.000001,13.8029348,27.999995 +2024-06-10,12:34 ,10.000006,26.1452238,-375.72904,48.0,13.8694946,37.999994 +2024-06-10,12:34 ,10.000006,26.0897271,-370.37495,38.000001,13.693779,27.999995 +2024-06-10,12:43 ,10.000006,26.0279793,-376.51283,48.0,13.9259306,37.999994 +2024-06-10,12:43 ,10.000006,25.9367021,-372.78163,38.000001,13.8310811,27.999995 +2024-06-10,12:53 ,10.000006,26.0146295,-377.23027,48.0,13.9538128,37.999994 +2024-06-10,12:53 ,10.000006,25.9178719,-369.95989,38.000001,13.7253896,27.999995 +2024-06-10,01:02 ,10.000006,25.9771016,-379.47225,48.0,13.929085,37.999994 +2024-06-10,01:02 ,10.000006,25.9433212,-376.63783,38.000001,13.8379674,27.999995 +2024-06-10,01:12 ,10.000006,26.1113046,-373.93246,48.0,13.7494265,37.999994 +2024-06-10,01:12 ,10.000006,25.7521679,-374.98321,38.000001,13.9819767,27.999995 +2024-06-10,01:21 ,10.000006,26.0678185,-375.86739,48.0,13.8735966,37.999994 +2024-06-10,01:21 ,10.000006,25.7550657,-369.39113,38.000001,13.7906124,27.999995 +2024-06-10,01:31 ,10.000006,26.0486312,-376.01962,48.0,13.8485059,37.999994 +2024-06-10,01:31 ,10.000006,25.7197291,-368.31384,38.000001,13.7259937,27.999995 +2024-06-10,01:40 ,10.000006,26.0325697,-372.95962,48.0,13.7206058,37.999994 +2024-06-10,01:40 ,10.00001,25.9102391,-374.10943,38.000001,13.8297617,27.999991 +2024-06-10,01:50 ,10.000006,26.0842395,-377.14347,48.0,13.9413484,37.999994 +2024-06-10,01:50 ,10.000006,25.6094704,-366.3876,38.000001,13.7798086,27.999995 +2024-06-10,01:59 ,10.000006,26.0845551,-370.38434,48.0,13.6677565,37.999994 +2024-06-10,01:59 ,10.000006,25.5816786,-369.15494,38.000001,13.8883747,27.999995 +2024-06-10,02:08 ,10.000003,26.0372718,-378.07093,48.0,13.9094809,37.999997 +2024-06-10,02:08 ,10.000006,25.6536076,-373.02652,38.000001,13.9208695,27.999995 +2024-06-10,02:17 ,14.000006,26.1847385,-491.97381,48.0,19.0508609,33.999994 +2024-06-10,02:17 ,14.000006,26.1847385,-491.97381,48.0,19.0508609,33.999994 +2024-06-10,02:26 ,14.000006,26.4365576,-507.4393,48.0,19.5117047,33.999994 +2024-06-10,02:26 ,14.000006,26.4365576,-507.4393,48.0,19.5117047,33.999994 +2024-06-10,02:35 ,14.000006,26.4297141,-497.31188,48.0,19.1062182,33.999994 +2024-06-10,02:35 ,14.000006,26.4297141,-497.31188,48.0,19.1062182,33.999994 +2024-06-10,02:44 ,14.000006,26.508811,-499.41218,48.0,19.1678224,33.999994 +2024-06-10,02:44 ,14.000006,26.508811,-499.41218,48.0,19.1678224,33.999994 +2024-06-10,02:53 ,14.000006,26.4483797,-491.58295,48.0,18.8485254,33.999994 +2024-06-10,02:53 ,14.000006,26.4483797,-491.58295,48.0,18.8485254,33.999994 +2024-06-10,03:02 ,14.000009,26.4073299,-488.76229,48.0,18.7432539,33.999991 +2024-06-10,03:02 ,14.000009,26.4073299,-488.76229,48.0,18.7432539,33.999991 diff --git a/tl.ini b/tl.ini index ad0a56f..21c269e 100644 --- a/tl.ini +++ b/tl.ini @@ -1,5 +1,5 @@ [path] -path=/home/friske01/P/TLV/KS/ks- +path=/home/friske01/P/TLV/KS/ path_files=/home/friske01/N/Abt_7/Fb75/Vakuum/Messplaetze/TL1/Messwerte/ diff --git a/writeLaTeX-ks-TLA.py b/writeLaTeX-ks-TLA.py index 927ee0c..9819b03 100644 --- a/writeLaTeX-ks-TLA.py +++ b/writeLaTeX-ks-TLA.py @@ -306,15 +306,17 @@ sectionResult_pup_mean_en = 'The mean leak rate (molar flow) for relativ pressur sectionResult_pup_int1 = 'Die molare Leckrate, bei einem relativ zur Atmosphäre eingestellten Druck von \\( p_\\text{up}= \\SI{ ' + PressureUpstream + '}{\\kPa} \\) ergab einen Wert von:' sectionResult_pup_int2 = 'Der Wert ergab sich aus der Interpolation der gemessenen Werte in einem Bereich von \\(p_{\\text{up}_1}=(\\num{ ' + PressureUpstreamMin + '}\\pm \\SI{0.1})~ \\si{kPa} \\) and \\(p_{\\text{up}_2}=(\\num{ ' + PressureUpstreamMax + '}\\pm \\SI{0.1})~ \\si{kPa} \\). Die Unsicherheit des relativ eingestellten Drucks ist \\( \\SI{0.5}{\\percent} \\).' - +#print("sectionResult1:", sectionResult1) +#print("sectionResult_pup_mean:", sectionResult_pup_mean) +#print("q_mol_Val:", q_mol_Val) sectionResult1_en = NoOfMeasurements + ' measurements were carried out on several days at a leak temperature \\( \\vartheta_\\text{TL}= \\num{ ' + TemperatureTL + '}\\pm \\SI{0.1}{\\degreeCelsius} \\) (thermostated) and an atmospheric pressure between \\(p_{\\text{atm}_1}=(\\num{ ' + PressureAtmosmin + ' }\\pm \\SI{0.1})~ \\si{ Pa} \\) and \\(p_{\\text{atm}_2}=(\\num{ ' + PressureAtmosmax + ' } \\pm \\num{0.1})~ \\si{ Pa} \\).' sectionResult2_en = ' From this the \\(pV\\)-flow can be calculated for a place at a temperature \\(\\vartheta_\\text{Ch}\\) (in \\si{\\degreeCelsius}), where a device under test is mounted and \\(T_0 = \\SI{273.15}{\\kelvin}\\), by the equation ' sectionResult3_en = 'At the temperature \\( \\vartheta_\\text{Ch}= \\SI{ 23 }{\\degreeCelsius} \\) the flow rate is' sectionResult4_en = 'The relative uncertainty \\(U\\) of the stated leak rate are \\( \\SI{'+ LeakUncertainty +'}{\\percent} \\).' if res == 1: - print ( "Standartmessung - mit Reservoir" ) - sectionResult = '\\section{' + sectionTitelResult + '\\linebreak {\\small \\emph{' + sectionTitelResult_en + '}}}\n' + sectionResult1 + sectionResult_std + '\\begin{english}' + sectionResult1_en + sectionResult_std_en + '\\end{english} ' + tab_q_mol_Val + print ( "Standardmessung - mit Reservoir" ) + sectionResult = '\\section{' + sectionTitelResult + '\\linebreak {\\small \\emph{' + sectionTitelResult_en + '}}}\n' + sectionResult1 + sectionResult_std + '\n\\begin{english}' + sectionResult1_en + sectionResult_std_en + '\\end{english} ' + tab_q_mol_Val sectionResult_en = '\\section{' + sectionTitelResult_en + '}\n' + sectionResult1_en + sectionResult_std_en + tab_q_mol_Val_en @@ -322,15 +324,15 @@ if res == 1: else: if(analy!='mean'): - print ( "Standartmessung - ohne Reservoir" ) + print ( "Standardmessung - ohne Reservoir" ) - sectionResult = '\\section{' + sectionTitelResult + '\\linebreak {\\small \\emph{' + sectionTitelResult_en + '}}}\n' - + sectionResult1 + sectionResult_pup_mean + q_mol_Val - + '\\begin{english}' + sectionResult1_en + ' The mean leak rate (molar flow) was determined to:' + q_mol_Val + '\\end{english} \n' + sectionResult = '\\section{' + sectionTitelResult + '\\linebreak {\\small \\emph{' + sectionTitelResult_en + '}}}\n' \ + + sectionResult1 + sectionResult_pup_mean + q_mol_Val \ + + '\n\\begin{english}' + sectionResult1_en + sectionResult_std_en + q_mol_Val + '\\end{english} \n' sectionResult = sectionResult + sectionResult2 + '\\begin{english}' + sectionResult2_en + '\\end{english} \n' + q_pV_Val_all + sectionResult3 + '\\begin{english}' + sectionResult3_en + '\\end{english} \n' + tab_q_pV_Val + sectionResult4 + '\\begin{english}' + sectionResult4_en + '\\end{english} \n' -sectionResult_en = sectionResult_en + sectionResult2_en + q_pV_Val_all + sectionResult3_en + tab_q_pV_Val_en + sectionResult4_en +#sectionResult_en = sectionResult_en + sectionResult2_en + q_pV_Val_all + sectionResult3_en + tab_q_pV_Val_en + sectionResult4_en -- GitLab