diff --git a/src/paveit/datamodels/__init__.py b/src/paveit/datamodels/__init__.py index ffacc4d..2740eaa 100755 --- a/src/paveit/datamodels/__init__.py +++ b/src/paveit/datamodels/__init__.py @@ -4,6 +4,7 @@ from .enumeration import * from .infrastructure import * from .material import * from .metrics import * +from .norm_specification import * from .project import * from .sheartest import * from .taskmanager import * diff --git a/src/paveit/datamodels/enumeration.py b/src/paveit/datamodels/enumeration.py index 4928813..c5d1c0b 100755 --- a/src/paveit/datamodels/enumeration.py +++ b/src/paveit/datamodels/enumeration.py @@ -23,4 +23,28 @@ class ProcessStatusEnum(Enum): INITIATED='initiated' ONGOING = 'ongoing' COMPLETED = 'completed' - ARCHIVE='archive' \ No newline at end of file + ARCHIVE='archive' + +class RelationalOperatorsEnum(Enum): + between = 'between' + lt = 'less than or equal to' + gt = 'greater than or equal to' + +class BitumenCategoryEnum(Enum): + Strassenbau = "Straßenbaubitumen" + PmbA = "Elastomermodifizierte Bitumen" + PmbB = "Plastomermodifizierte Bitumen" + + +# Normen + +class NormEnum(Enum): + #Bitumen + DINEN1426 = "DIN EN 1426" + DINEN1427 = "DIN EN 1427" + DINEN12607_1 = "DIN EN 12607-1" + DINEN12592 = "DIN EN 12592" + DINEN12593 = "DIN EN 12593" + DINISO2592 = "DIN EN ISO 2592" + #Gestein + TLGestein2018 = "'TL Gestein-StB 04 (2018)'" \ No newline at end of file diff --git a/src/paveit/datamodels/material.py b/src/paveit/datamodels/material.py index 4a9e1ec..9d3b4a8 100755 --- a/src/paveit/datamodels/material.py +++ b/src/paveit/datamodels/material.py @@ -5,6 +5,7 @@ from mongoengine import * from .project import Project from .usermanagement import Organisation, User +from .norm_specification import DeliveryGrain class Material(Document): @@ -21,7 +22,7 @@ class Material(Document): project_id = ListField(LazyReferenceField(Project, required=False, reverse_delete_rule=CASCADE), - required=True) + required=False) user_id = LazyReferenceField(User, required=False, @@ -46,7 +47,8 @@ class Material(Document): class Asphalt(Material): - + norm = StringField(required=False, default='TP Asphalt Teil 24') + name = StringField() material = StringField() bitumen = StringField(required=False) @@ -56,6 +58,7 @@ class Asphalt(Material): class Bitumen(Material): + norm = StringField(required=False, default='TP Asphalt Teil 24') name = StringField() material = StringField() @@ -64,6 +67,7 @@ class Bitumen(Material): class Bitumenemulsion(Material): + norm = StringField(required=False, default='TP Asphalt Teil 24') name = StringField() material = StringField() @@ -72,15 +76,29 @@ class Bitumenemulsion(Material): class Epoxy(Material): + norm = StringField(required=False, default='TP Asphalt Teil 24') name = StringField() + material = StringField() young_modulus = DictField() class Kompaktasphalt(Material): + norm = StringField(required=False, default='TP Asphalt Teil 24') name = StringField() +class Aggregate(Material): + + norm = StringField(required=True, default='TL Gestein-StB') + name = StringField(required=True) + + delivery_grain = LazyReferenceField(DeliveryGrain, + required=True, + reverse_delete_rule=CASCADE) #Lieferkörnung + + supply_source = StringField(required=True) #Bezugsquelle + ce_marking = StringField(required=True) #CE Kennzeichen class Dummy(Material): diff --git a/src/paveit/datamodels/norm_specification.py b/src/paveit/datamodels/norm_specification.py new file mode 100644 index 0000000..03d4080 --- /dev/null +++ b/src/paveit/datamodels/norm_specification.py @@ -0,0 +1,102 @@ +from mongoengine import * + +from .enumeration import RelationalOperatorsEnum, BitumenCategoryEnum, NormEnum + +class EnumerateBase(Document): + + meta = { + 'allow_inheritance': True, + 'index_opts': {}, + 'index_background': True, + 'index_cls': False, + 'auto_create_index': True, + 'collection': 'norm_specification', + "db_alias": 'dblabtests', + } + +# Gesteine +class DeliveryGrain(EnumerateBase): + name = StringField() + category = StringField() + norm = StringField(required=True, default='TL Gestein-StB 04 (2018)') + +# Bitumen +class BitumenParameterTLBitumen2013Strassenbaubitumen(EnumerateBase): + + penetration = FloatField(min_value=0, max_value=1000) + softening_point = FloatField(min_value=0, max_value =500) + flash_point = FloatField(min_value=0, max_value=500) + solubility = FloatField(default=99.0, min_value=0, max_value=100) + fraass_breaking_point = FloatField(min_value=-100, max_value=100) + hardening_resistance_penetration = FloatField(min_value=0, max_value=100) + hardening_resistance_softening_point= FloatField(min_value=0, max_value=100) + hardening_resistance_masschange = FloatField(min_value=0, max_value=100) + + +class BitumenParameterLimitsTLBitumen2013Strassenbaubitumen(EnumerateBase): + + penetration_norm = EnumField(NormEnum, default=NormEnum.DINEN1426) + penetration_unit = StringField('0.1 mm') + penetration_operator = EnumField(RelationalOperatorsEnum, default=RelationalOperatorsEnum.between) + penetration_max = FloatField(min_value=0, max_value=1000) + penetration_min = FloatField(min_value=0, max_value=1000) + + # Erweichungspunkt Ring und Kugel + softening_point_norm = EnumField(NormEnum, default=NormEnum.DINEN1427) + softening_point_unit = StringField('°C') + softening_point_operator = EnumField(RelationalOperatorsEnum, default=RelationalOperatorsEnum.between) + softening_point_min = FloatField(min_value=0, max_value=500) + softening_point_max = FloatField(min_value=0, max_value=500) + + # Flammpunk + flash_point_norm = EnumField(NormEnum, default=NormEnum.DINISO2592) + flash_point_unit = StringField('°C') + flash_point_operator = EnumField(RelationalOperatorsEnum, default=RelationalOperatorsEnum.gt) + flash_point_min = FloatField(min_value=0, max_value=500) + + # Löslichkeit + solubility_norm = EnumField(NormEnum, default=NormEnum.DINEN12592) + solubility_unit = StringField('%') + solubility_operator = EnumField(RelationalOperatorsEnum, default=RelationalOperatorsEnum.gt) + solubility_min = FloatField(default=99.0, min_value=0, max_value=100) + + # Brechpunkt nach Fraaß + fraass_breaking_point_norm = EnumField(NormEnum, default=NormEnum.DINEN12593) + fraass_breaking_point_unit = StringField('°C') + fraass_breaking_point_operator = EnumField(RelationalOperatorsEnum, default=RelationalOperatorsEnum.lt) + fraass_breaking_point_max = FloatField(min_value=-100, max_value=100) + + # Beständigkeit gegen Verhärtung unter Einfluss von Wärme und Luft + ## verbleibende Penetration + hardening_resistance_penetration_norm = EnumField(NormEnum, default=NormEnum.DINEN1426) + hardening_resistance_penetration_unit = StringField('%') + hardening_resistance_penetration_operator = EnumField(RelationalOperatorsEnum, default=RelationalOperatorsEnum.gt) + hardening_resistance_penetration_min = FloatField(min_value=0, max_value=100) + + ## Zunahme des Erweichungspunktes Ring und Kugel + hardening_resistance_softening_point_norm = EnumField(NormEnum, default=NormEnum.DINEN1427) + hardening_resistance_softening_point_unit = StringField('°C') + hardening_resistance_softening_point_operator = EnumField(RelationalOperatorsEnum, default=RelationalOperatorsEnum.lt) + hardening_resistance_softening_point_max = FloatField(min_value=0, max_value=100) + + ## Massenänderung + hardening_resistance_masschange_norm = EnumField(NormEnum, default=NormEnum.DINEN12607_1) + hardening_resistance_masschange_unit = StringField('%') + hardening_resistance_masschange_operator = EnumField(RelationalOperatorsEnum, default=RelationalOperatorsEnum.lt) + hardening_resistance_masschange_max = FloatField(min_value=0, max_value=100) + + +class Bitumen(EnumerateBase): + name = StringField() + + category = EnumField(BitumenCategoryEnum, required=True) + norm = EnumField(NormEnum, required=True) + + parameter = ReferenceField(EnumerateBase) + limits = LazyReferenceField(EnumerateBase) + +# Asphalt +class Asphalt(EnumerateBase): + name = StringField() + category = StringField() + norm = StringField(required=False, default='TL Gestein-StB 04 (2018)') \ No newline at end of file