From da616093ed20b295eca4c71cf8a1154eed2d5493 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20R=C3=BChling?= Date: Thu, 9 Jan 2025 19:41:14 +0100 Subject: [PATCH] added shadow master v0.2 example --- examples/asp/shadow-master-v0.2-coom.lp | 507 ++++++++++++++++++++++++ examples/coom/shadow-master-v0.2.coom | 237 +++++++++++ noxfile.py | 2 +- tests/__init__.py | 2 +- 4 files changed, 746 insertions(+), 2 deletions(-) create mode 100644 examples/asp/shadow-master-v0.2-coom.lp create mode 100644 examples/coom/shadow-master-v0.2.coom diff --git a/examples/asp/shadow-master-v0.2-coom.lp b/examples/asp/shadow-master-v0.2-coom.lp new file mode 100644 index 0000000..9046c6a --- /dev/null +++ b/examples/asp/shadow-master-v0.2-coom.lp @@ -0,0 +1,507 @@ +%%% COOM model +coom_structure("product"). +coom_feature("product","unterposition","Unterposition",1,25). + +coom_structure("Unterposition"). +coom_feature("Unterposition","grundmerkmale","Grundmerkmale",1,1). +coom_feature("Unterposition","konstruktion","Konstruktion",1,1). +coom_feature("Unterposition","cover","Cover",1,1). + +coom_structure("Grundmerkmale"). +coom_feature("Grundmerkmale","montagehoehe","num",1,1). +coom_range("Grundmerkmale","montagehoehe",#inf,#sup). +coom_feature("Grundmerkmale","durchgangshoehe","num",1,1). +coom_range("Grundmerkmale","durchgangshoehe",#inf,#sup). +coom_feature("Grundmerkmale","laenge","num",1,1). +coom_range("Grundmerkmale","laenge",#inf,#sup). +coom_feature("Grundmerkmale","eingabeBreite","num",1,1). +coom_range("Grundmerkmale","eingabeBreite",#inf,#sup). +coom_feature("Grundmerkmale","bestellBreite","num",1,1). +coom_range("Grundmerkmale","bestellBreite",#inf,#sup). +coom_feature("Grundmerkmale","debugValues","Debug",1,1). +coom_feature("Grundmerkmale","flaeche","num",1,1). +coom_range("Grundmerkmale","flaeche",#inf,#sup). +coom_feature("Grundmerkmale","neigungswinkelAnlage","num",1,1). +coom_range("Grundmerkmale","neigungswinkelAnlage",#inf,#sup). +coom_feature("Grundmerkmale","weight","num",1,1). +coom_range("Grundmerkmale","weight",#inf,#sup). + +coom_structure("Debug"). +coom_feature("Debug","deltaHoehe","num",1,1). +coom_range("Debug","deltaHoehe",#inf,#sup). +coom_feature("Debug","deltaBreite","num",1,1). +coom_range("Debug","deltaBreite",#inf,#sup). +coom_feature("Debug","deltaHoehePow2","num",1,1). +coom_range("Debug","deltaHoehePow2",#inf,#sup). +coom_feature("Debug","deltaBreitePow2","num",1,1). +coom_range("Debug","deltaBreitePow2",#inf,#sup). +coom_feature("Debug","sqrtValue","num",1,1). +coom_range("Debug","sqrtValue",#inf,#sup). +coom_feature("Debug","atanValue","num",1,1). +coom_range("Debug","atanValue",#inf,#sup). +coom_feature("Debug","acosValue","num",1,1). +coom_range("Debug","acosValue",#inf,#sup). +coom_feature("Debug","atanArg","num",1,1). +coom_range("Debug","atanArg",#inf,#sup). +coom_feature("Debug","acosArg","num",1,1). +coom_range("Debug","acosArg",#inf,#sup). + +coom_structure("Konstruktion"). +coom_feature("Konstruktion","pfostenLI","Pfosten",1,1). +coom_feature("Konstruktion","pfostenRE","Pfosten",1,1). + +coom_structure("Pfosten"). +coom_feature("Pfosten","km_gesamthoehe","num",1,1). +coom_range("Pfosten","km_gesamthoehe",#inf,#sup). +coom_feature("Pfosten","km_mittePfosten","num",1,1). +coom_range("Pfosten","km_mittePfosten",#inf,#sup). +coom_feature("Pfosten","ueberstand","num",1,1). +coom_range("Pfosten","ueberstand",#inf,#sup). +coom_feature("Pfosten","unterposition","Unterposition",1,1). +coom_feature("Pfosten","typPfosten","TypPfosten",1,1). + +coom_enumeration("TypPfosten"). +coom_option("TypPfosten", "_Ohne"). +coom_option("TypPfosten", "_Starr"). +coom_option("TypPfosten", "_Hoehenverstellbar"). +coom_option("TypPfosten", "_Doppelpfosten"). + +coom_enumeration("Cover"). +coom_attribute("Cover","weight","num"). +coom_option("Cover", "_AcrylLumera"). +coom_attribute_value("Cover","_AcrylLumera","weight",1495). +coom_option("Cover", "_AcrylPerfora"). +coom_attribute_value("Cover","_AcrylPerfora","weight",1238). +coom_option("Cover", "_AcrylAllWeather"). +coom_attribute_value("Cover","_AcrylAllWeather","weight",2600). +coom_option("Cover", "_AcrylStandardFremd"). +coom_attribute_value("Cover","_AcrylStandardFremd","weight",800). +coom_option("Cover", "_AcrylUniQuer"). +coom_attribute_value("Cover","_AcrylUniQuer","weight",599). +coom_option("Cover", "_AcrylUniQuerFremd"). +coom_attribute_value("Cover","_AcrylUniQuerFremd","weight",673). +coom_option("Cover", "_KombiAcryl"). +coom_attribute_value("Cover","_KombiAcryl","weight",2598). +coom_option("Cover", "_KombiSoltis"). +coom_attribute_value("Cover","_KombiSoltis","weight",2293). +coom_option("Cover", "_Satinee"). +coom_attribute_value("Cover","_Satinee","weight",1487). +coom_option("Cover", "_Screen"). +coom_attribute_value("Cover","_Screen","weight",2499). + +coom_behavior(0). +coom_context(0,"Pfosten"). +coom_require(0,"ueberstand=(unterposition.grundmerkmale.eingabeBreite-km_mittePfosten)"). +coom_binary("ueberstand=(unterposition.grundmerkmale.eingabeBreite-km_mittePfosten)","ueberstand","=","(unterposition.grundmerkmale.eingabeBreite-km_mittePfosten)"). +coom_path("ueberstand",0,"ueberstand"). +coom_unary("(unterposition.grundmerkmale.eingabeBreite-km_mittePfosten)","()","unterposition.grundmerkmale.eingabeBreite-km_mittePfosten"). +coom_binary("unterposition.grundmerkmale.eingabeBreite-km_mittePfosten","unterposition.grundmerkmale.eingabeBreite","-","km_mittePfosten"). +coom_path("unterposition.grundmerkmale.eingabeBreite",0,"unterposition"). +coom_path("unterposition.grundmerkmale.eingabeBreite",1,"grundmerkmale"). +coom_path("unterposition.grundmerkmale.eingabeBreite",2,"eingabeBreite"). +coom_path("km_mittePfosten",0,"km_mittePfosten"). + +coom_behavior(1). +coom_context(1,"Pfosten"). +coom_require(1,"km_gesamthoehe=(unterposition.grundmerkmale.durchgangshoehe+(tan(unterposition.grundmerkmale.neigungswinkelAnlage)*ueberstand))"). +coom_binary("km_gesamthoehe=(unterposition.grundmerkmale.durchgangshoehe+(tan(unterposition.grundmerkmale.neigungswinkelAnlage)*ueberstand))","km_gesamthoehe","=","(unterposition.grundmerkmale.durchgangshoehe+(tan(unterposition.grundmerkmale.neigungswinkelAnlage)*ueberstand))"). +coom_path("km_gesamthoehe",0,"km_gesamthoehe"). +coom_unary("(unterposition.grundmerkmale.durchgangshoehe+(tan(unterposition.grundmerkmale.neigungswinkelAnlage)*ueberstand))","()","unterposition.grundmerkmale.durchgangshoehe+(tan(unterposition.grundmerkmale.neigungswinkelAnlage)*ueberstand)"). +coom_binary("unterposition.grundmerkmale.durchgangshoehe+(tan(unterposition.grundmerkmale.neigungswinkelAnlage)*ueberstand)","unterposition.grundmerkmale.durchgangshoehe","+","(tan(unterposition.grundmerkmale.neigungswinkelAnlage)*ueberstand)"). +coom_path("unterposition.grundmerkmale.durchgangshoehe",0,"unterposition"). +coom_path("unterposition.grundmerkmale.durchgangshoehe",1,"grundmerkmale"). +coom_path("unterposition.grundmerkmale.durchgangshoehe",2,"durchgangshoehe"). +coom_unary("(tan(unterposition.grundmerkmale.neigungswinkelAnlage)*ueberstand)","()","tan(unterposition.grundmerkmale.neigungswinkelAnlage)*ueberstand"). +coom_binary("tan(unterposition.grundmerkmale.neigungswinkelAnlage)*ueberstand","tan(unterposition.grundmerkmale.neigungswinkelAnlage)","*","ueberstand"). +coom_function("Pfosten","tan(unterposition.grundmerkmale.neigungswinkelAnlage)","tan","unterposition.grundmerkmale.neigungswinkelAnlage"). +coom_path("unterposition.grundmerkmale.neigungswinkelAnlage",0,"unterposition"). +coom_path("unterposition.grundmerkmale.neigungswinkelAnlage",1,"grundmerkmale"). +coom_path("unterposition.grundmerkmale.neigungswinkelAnlage",2,"neigungswinkelAnlage"). +coom_path("ueberstand",0,"ueberstand"). + +coom_behavior(2). +coom_context(2,"Pfosten"). +coom_require(2,"ueberstand>105"). +coom_binary("ueberstand>105","ueberstand",">","105"). +coom_path("ueberstand",0,"ueberstand"). +coom_number("105",105). + +coom_behavior(3). +coom_context(3,"Pfosten"). +coom_require(3,"km_mittePfosten<4000"). +coom_binary("km_mittePfosten<4000","km_mittePfosten","<","4000"). +coom_path("km_mittePfosten",0,"km_mittePfosten"). +coom_number("4000",4000). + +coom_behavior(4). +coom_context(4,"Pfosten"). +coom_require(4,"km_gesamthoehe>1000"). +coom_binary("km_gesamthoehe>1000","km_gesamthoehe",">","1000"). +coom_path("km_gesamthoehe",0,"km_gesamthoehe"). +coom_number("1000",1000). + +coom_behavior(5). +coom_context(5,"Pfosten"). +coom_require(5,"km_gesamthoehe<3200"). +coom_binary("km_gesamthoehe<3200","km_gesamthoehe","<","3200"). +coom_path("km_gesamthoehe",0,"km_gesamthoehe"). +coom_number("3200",3200). + +coom_behavior(6). +coom_context(6,"Pfosten"). +coom_condition(6,"km_gesamthoehe>2200"). +coom_binary("km_gesamthoehe>2200","km_gesamthoehe",">","2200"). +coom_path("km_gesamthoehe",0,"km_gesamthoehe"). +coom_number("2200",2200). +coom_require(6,"typPfosten!=_Doppelpfosten"). +coom_binary("typPfosten!=_Doppelpfosten","typPfosten","!=","_Doppelpfosten"). +coom_path("typPfosten",0,"typPfosten"). +coom_path("_Doppelpfosten",0,"_Doppelpfosten"). + +coom_behavior(7). +coom_context(7,"Unterposition"). +coom_require(7,"grundmerkmale.neigungswinkelAnlage=(atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))+acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))))"). +coom_binary("grundmerkmale.neigungswinkelAnlage=(atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))+acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))))","grundmerkmale.neigungswinkelAnlage","=","(atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))+acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))))"). +coom_path("grundmerkmale.neigungswinkelAnlage",0,"grundmerkmale"). +coom_path("grundmerkmale.neigungswinkelAnlage",1,"neigungswinkelAnlage"). +coom_unary("(atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))+acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))))","()","atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))+acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))))"). +coom_binary("atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))+acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))))","atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))","+","acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))))"). +coom_function("Unterposition","atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))","atan","((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)))"). +coom_unary("((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)))","()","(125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))"). +coom_binary("(125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","(125-grundmerkmale.eingabeBreite)","/","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))"). +coom_unary("(125-grundmerkmale.eingabeBreite)","()","125-grundmerkmale.eingabeBreite"). +coom_binary("125-grundmerkmale.eingabeBreite","125","-","grundmerkmale.eingabeBreite"). +coom_number("125",125). +coom_path("grundmerkmale.eingabeBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.eingabeBreite",1,"eingabeBreite"). +coom_unary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","()","(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)"). +coom_binary("(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)","(grundmerkmale.montagehoehe-8.82)","+","(90-grundmerkmale.durchgangshoehe)"). +coom_unary("(grundmerkmale.montagehoehe-8.82)","()","grundmerkmale.montagehoehe-8.82"). +coom_binary("grundmerkmale.montagehoehe-8.82","grundmerkmale.montagehoehe","-","8.82"). +coom_path("grundmerkmale.montagehoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.montagehoehe",1,"montagehoehe"). +coom_unary("(90-grundmerkmale.durchgangshoehe)","()","90-grundmerkmale.durchgangshoehe"). +coom_binary("90-grundmerkmale.durchgangshoehe","90","-","grundmerkmale.durchgangshoehe"). +coom_number("90",90). +coom_path("grundmerkmale.durchgangshoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.durchgangshoehe",1,"durchgangshoehe"). +coom_function("Unterposition","acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))))","acos","(48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))"). +coom_unary("(48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))","()","48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))"). +coom_binary("48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))","48.4985","/","sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))"). +coom_function("Unterposition","sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))","sqrt","((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))"). +coom_unary("((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))","()","(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)"). +coom_binary("(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)","(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)","+","((125-grundmerkmale.eingabeBreite)^2)"). +coom_unary("(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)","()","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2"). +coom_binary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","^","2"). +coom_unary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","()","(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)"). +coom_binary("(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)","(grundmerkmale.montagehoehe-8.82)","+","(90-grundmerkmale.durchgangshoehe)"). +coom_unary("(grundmerkmale.montagehoehe-8.82)","()","grundmerkmale.montagehoehe-8.82"). +coom_binary("grundmerkmale.montagehoehe-8.82","grundmerkmale.montagehoehe","-","8.82"). +coom_path("grundmerkmale.montagehoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.montagehoehe",1,"montagehoehe"). +coom_unary("(90-grundmerkmale.durchgangshoehe)","()","90-grundmerkmale.durchgangshoehe"). +coom_binary("90-grundmerkmale.durchgangshoehe","90","-","grundmerkmale.durchgangshoehe"). +coom_number("90",90). +coom_path("grundmerkmale.durchgangshoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.durchgangshoehe",1,"durchgangshoehe"). +coom_number("2",2). +coom_unary("((125-grundmerkmale.eingabeBreite)^2)","()","(125-grundmerkmale.eingabeBreite)^2"). +coom_binary("(125-grundmerkmale.eingabeBreite)^2","(125-grundmerkmale.eingabeBreite)","^","2"). +coom_unary("(125-grundmerkmale.eingabeBreite)","()","125-grundmerkmale.eingabeBreite"). +coom_binary("125-grundmerkmale.eingabeBreite","125","-","grundmerkmale.eingabeBreite"). +coom_number("125",125). +coom_path("grundmerkmale.eingabeBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.eingabeBreite",1,"eingabeBreite"). +coom_number("2",2). + +coom_behavior(8). +coom_context(8,"Unterposition"). +coom_require(8,"grundmerkmale.bestellBreite=(grundmerkmale.eingabeBreite+(tan(grundmerkmale.neigungswinkelAnlage)*80))"). +coom_binary("grundmerkmale.bestellBreite=(grundmerkmale.eingabeBreite+(tan(grundmerkmale.neigungswinkelAnlage)*80))","grundmerkmale.bestellBreite","=","(grundmerkmale.eingabeBreite+(tan(grundmerkmale.neigungswinkelAnlage)*80))"). +coom_path("grundmerkmale.bestellBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.bestellBreite",1,"bestellBreite"). +coom_unary("(grundmerkmale.eingabeBreite+(tan(grundmerkmale.neigungswinkelAnlage)*80))","()","grundmerkmale.eingabeBreite+(tan(grundmerkmale.neigungswinkelAnlage)*80)"). +coom_binary("grundmerkmale.eingabeBreite+(tan(grundmerkmale.neigungswinkelAnlage)*80)","grundmerkmale.eingabeBreite","+","(tan(grundmerkmale.neigungswinkelAnlage)*80)"). +coom_path("grundmerkmale.eingabeBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.eingabeBreite",1,"eingabeBreite"). +coom_unary("(tan(grundmerkmale.neigungswinkelAnlage)*80)","()","tan(grundmerkmale.neigungswinkelAnlage)*80"). +coom_binary("tan(grundmerkmale.neigungswinkelAnlage)*80","tan(grundmerkmale.neigungswinkelAnlage)","*","80"). +coom_function("Unterposition","tan(grundmerkmale.neigungswinkelAnlage)","tan","grundmerkmale.neigungswinkelAnlage"). +coom_path("grundmerkmale.neigungswinkelAnlage",0,"grundmerkmale"). +coom_path("grundmerkmale.neigungswinkelAnlage",1,"neigungswinkelAnlage"). +coom_number("80",80). + +coom_behavior(9). +coom_context(9,"Unterposition"). +coom_require(9,"grundmerkmale.flaeche=(grundmerkmale.laenge*(grundmerkmale.bestellBreite/1000000))"). +coom_binary("grundmerkmale.flaeche=(grundmerkmale.laenge*(grundmerkmale.bestellBreite/1000000))","grundmerkmale.flaeche","=","(grundmerkmale.laenge*(grundmerkmale.bestellBreite/1000000))"). +coom_path("grundmerkmale.flaeche",0,"grundmerkmale"). +coom_path("grundmerkmale.flaeche",1,"flaeche"). +coom_unary("(grundmerkmale.laenge*(grundmerkmale.bestellBreite/1000000))","()","grundmerkmale.laenge*(grundmerkmale.bestellBreite/1000000)"). +coom_binary("grundmerkmale.laenge*(grundmerkmale.bestellBreite/1000000)","grundmerkmale.laenge","*","(grundmerkmale.bestellBreite/1000000)"). +coom_path("grundmerkmale.laenge",0,"grundmerkmale"). +coom_path("grundmerkmale.laenge",1,"laenge"). +coom_unary("(grundmerkmale.bestellBreite/1000000)","()","grundmerkmale.bestellBreite/1000000"). +coom_binary("grundmerkmale.bestellBreite/1000000","grundmerkmale.bestellBreite","/","1000000"). +coom_path("grundmerkmale.bestellBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.bestellBreite",1,"bestellBreite"). +coom_number("1000000",1000000). + +coom_behavior(10). +coom_context(10,"Unterposition"). +coom_require(10,"grundmerkmale.weight=(grundmerkmale.flaeche*(cover.weight/1000))"). +coom_binary("grundmerkmale.weight=(grundmerkmale.flaeche*(cover.weight/1000))","grundmerkmale.weight","=","(grundmerkmale.flaeche*(cover.weight/1000))"). +coom_path("grundmerkmale.weight",0,"grundmerkmale"). +coom_path("grundmerkmale.weight",1,"weight"). +coom_unary("(grundmerkmale.flaeche*(cover.weight/1000))","()","grundmerkmale.flaeche*(cover.weight/1000)"). +coom_binary("grundmerkmale.flaeche*(cover.weight/1000)","grundmerkmale.flaeche","*","(cover.weight/1000)"). +coom_path("grundmerkmale.flaeche",0,"grundmerkmale"). +coom_path("grundmerkmale.flaeche",1,"flaeche"). +coom_unary("(cover.weight/1000)","()","cover.weight/1000"). +coom_binary("cover.weight/1000","cover.weight","/","1000"). +coom_path("cover.weight",0,"cover"). +coom_path("cover.weight",1,"weight"). +coom_number("1000",1000). + +coom_behavior(11). +coom_context(11,"Unterposition"). +coom_require(11,"grundmerkmale.debugValues.deltaHoehe=((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))"). +coom_binary("grundmerkmale.debugValues.deltaHoehe=((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","grundmerkmale.debugValues.deltaHoehe","=","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))"). +coom_path("grundmerkmale.debugValues.deltaHoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.debugValues.deltaHoehe",1,"debugValues"). +coom_path("grundmerkmale.debugValues.deltaHoehe",2,"deltaHoehe"). +coom_unary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","()","(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)"). +coom_binary("(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)","(grundmerkmale.montagehoehe-8.82)","+","(90-grundmerkmale.durchgangshoehe)"). +coom_unary("(grundmerkmale.montagehoehe-8.82)","()","grundmerkmale.montagehoehe-8.82"). +coom_binary("grundmerkmale.montagehoehe-8.82","grundmerkmale.montagehoehe","-","8.82"). +coom_path("grundmerkmale.montagehoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.montagehoehe",1,"montagehoehe"). +coom_unary("(90-grundmerkmale.durchgangshoehe)","()","90-grundmerkmale.durchgangshoehe"). +coom_binary("90-grundmerkmale.durchgangshoehe","90","-","grundmerkmale.durchgangshoehe"). +coom_number("90",90). +coom_path("grundmerkmale.durchgangshoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.durchgangshoehe",1,"durchgangshoehe"). + +coom_behavior(12). +coom_context(12,"Unterposition"). +coom_require(12,"grundmerkmale.debugValues.deltaBreite=(125-grundmerkmale.eingabeBreite)"). +coom_binary("grundmerkmale.debugValues.deltaBreite=(125-grundmerkmale.eingabeBreite)","grundmerkmale.debugValues.deltaBreite","=","(125-grundmerkmale.eingabeBreite)"). +coom_path("grundmerkmale.debugValues.deltaBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.debugValues.deltaBreite",1,"debugValues"). +coom_path("grundmerkmale.debugValues.deltaBreite",2,"deltaBreite"). +coom_unary("(125-grundmerkmale.eingabeBreite)","()","125-grundmerkmale.eingabeBreite"). +coom_binary("125-grundmerkmale.eingabeBreite","125","-","grundmerkmale.eingabeBreite"). +coom_number("125",125). +coom_path("grundmerkmale.eingabeBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.eingabeBreite",1,"eingabeBreite"). + +coom_behavior(13). +coom_context(13,"Unterposition"). +coom_require(13,"grundmerkmale.debugValues.deltaBreitePow2=((125-grundmerkmale.eingabeBreite)^2)"). +coom_binary("grundmerkmale.debugValues.deltaBreitePow2=((125-grundmerkmale.eingabeBreite)^2)","grundmerkmale.debugValues.deltaBreitePow2","=","((125-grundmerkmale.eingabeBreite)^2)"). +coom_path("grundmerkmale.debugValues.deltaBreitePow2",0,"grundmerkmale"). +coom_path("grundmerkmale.debugValues.deltaBreitePow2",1,"debugValues"). +coom_path("grundmerkmale.debugValues.deltaBreitePow2",2,"deltaBreitePow2"). +coom_unary("((125-grundmerkmale.eingabeBreite)^2)","()","(125-grundmerkmale.eingabeBreite)^2"). +coom_binary("(125-grundmerkmale.eingabeBreite)^2","(125-grundmerkmale.eingabeBreite)","^","2"). +coom_unary("(125-grundmerkmale.eingabeBreite)","()","125-grundmerkmale.eingabeBreite"). +coom_binary("125-grundmerkmale.eingabeBreite","125","-","grundmerkmale.eingabeBreite"). +coom_number("125",125). +coom_path("grundmerkmale.eingabeBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.eingabeBreite",1,"eingabeBreite"). +coom_number("2",2). + +coom_behavior(14). +coom_context(14,"Unterposition"). +coom_require(14,"grundmerkmale.debugValues.deltaHoehePow2=(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)"). +coom_binary("grundmerkmale.debugValues.deltaHoehePow2=(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)","grundmerkmale.debugValues.deltaHoehePow2","=","(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)"). +coom_path("grundmerkmale.debugValues.deltaHoehePow2",0,"grundmerkmale"). +coom_path("grundmerkmale.debugValues.deltaHoehePow2",1,"debugValues"). +coom_path("grundmerkmale.debugValues.deltaHoehePow2",2,"deltaHoehePow2"). +coom_unary("(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)","()","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2"). +coom_binary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","^","2"). +coom_unary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","()","(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)"). +coom_binary("(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)","(grundmerkmale.montagehoehe-8.82)","+","(90-grundmerkmale.durchgangshoehe)"). +coom_unary("(grundmerkmale.montagehoehe-8.82)","()","grundmerkmale.montagehoehe-8.82"). +coom_binary("grundmerkmale.montagehoehe-8.82","grundmerkmale.montagehoehe","-","8.82"). +coom_path("grundmerkmale.montagehoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.montagehoehe",1,"montagehoehe"). +coom_unary("(90-grundmerkmale.durchgangshoehe)","()","90-grundmerkmale.durchgangshoehe"). +coom_binary("90-grundmerkmale.durchgangshoehe","90","-","grundmerkmale.durchgangshoehe"). +coom_number("90",90). +coom_path("grundmerkmale.durchgangshoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.durchgangshoehe",1,"durchgangshoehe"). +coom_number("2",2). + +coom_behavior(15). +coom_context(15,"Unterposition"). +coom_require(15,"grundmerkmale.debugValues.sqrtValue=sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))"). +coom_binary("grundmerkmale.debugValues.sqrtValue=sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))","grundmerkmale.debugValues.sqrtValue","=","sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))"). +coom_path("grundmerkmale.debugValues.sqrtValue",0,"grundmerkmale"). +coom_path("grundmerkmale.debugValues.sqrtValue",1,"debugValues"). +coom_path("grundmerkmale.debugValues.sqrtValue",2,"sqrtValue"). +coom_function("Unterposition","sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))","sqrt","((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))"). +coom_unary("((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))","()","(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)"). +coom_binary("(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)","(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)","+","((125-grundmerkmale.eingabeBreite)^2)"). +coom_unary("(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)","()","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2"). +coom_binary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","^","2"). +coom_unary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","()","(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)"). +coom_binary("(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)","(grundmerkmale.montagehoehe-8.82)","+","(90-grundmerkmale.durchgangshoehe)"). +coom_unary("(grundmerkmale.montagehoehe-8.82)","()","grundmerkmale.montagehoehe-8.82"). +coom_binary("grundmerkmale.montagehoehe-8.82","grundmerkmale.montagehoehe","-","8.82"). +coom_path("grundmerkmale.montagehoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.montagehoehe",1,"montagehoehe"). +coom_unary("(90-grundmerkmale.durchgangshoehe)","()","90-grundmerkmale.durchgangshoehe"). +coom_binary("90-grundmerkmale.durchgangshoehe","90","-","grundmerkmale.durchgangshoehe"). +coom_number("90",90). +coom_path("grundmerkmale.durchgangshoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.durchgangshoehe",1,"durchgangshoehe"). +coom_number("2",2). +coom_unary("((125-grundmerkmale.eingabeBreite)^2)","()","(125-grundmerkmale.eingabeBreite)^2"). +coom_binary("(125-grundmerkmale.eingabeBreite)^2","(125-grundmerkmale.eingabeBreite)","^","2"). +coom_unary("(125-grundmerkmale.eingabeBreite)","()","125-grundmerkmale.eingabeBreite"). +coom_binary("125-grundmerkmale.eingabeBreite","125","-","grundmerkmale.eingabeBreite"). +coom_number("125",125). +coom_path("grundmerkmale.eingabeBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.eingabeBreite",1,"eingabeBreite"). +coom_number("2",2). + +coom_behavior(16). +coom_context(16,"Unterposition"). +coom_require(16,"grundmerkmale.debugValues.acosValue=acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))))"). +coom_binary("grundmerkmale.debugValues.acosValue=acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))))","grundmerkmale.debugValues.acosValue","=","acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))))"). +coom_path("grundmerkmale.debugValues.acosValue",0,"grundmerkmale"). +coom_path("grundmerkmale.debugValues.acosValue",1,"debugValues"). +coom_path("grundmerkmale.debugValues.acosValue",2,"acosValue"). +coom_function("Unterposition","acos((48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))))","acos","(48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))"). +coom_unary("(48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))","()","48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))"). +coom_binary("48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))","48.4985","/","sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))"). +coom_function("Unterposition","sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))","sqrt","((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))"). +coom_unary("((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))","()","(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)"). +coom_binary("(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)","(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)","+","((125-grundmerkmale.eingabeBreite)^2)"). +coom_unary("(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)","()","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2"). +coom_binary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","^","2"). +coom_unary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","()","(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)"). +coom_binary("(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)","(grundmerkmale.montagehoehe-8.82)","+","(90-grundmerkmale.durchgangshoehe)"). +coom_unary("(grundmerkmale.montagehoehe-8.82)","()","grundmerkmale.montagehoehe-8.82"). +coom_binary("grundmerkmale.montagehoehe-8.82","grundmerkmale.montagehoehe","-","8.82"). +coom_path("grundmerkmale.montagehoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.montagehoehe",1,"montagehoehe"). +coom_unary("(90-grundmerkmale.durchgangshoehe)","()","90-grundmerkmale.durchgangshoehe"). +coom_binary("90-grundmerkmale.durchgangshoehe","90","-","grundmerkmale.durchgangshoehe"). +coom_number("90",90). +coom_path("grundmerkmale.durchgangshoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.durchgangshoehe",1,"durchgangshoehe"). +coom_number("2",2). +coom_unary("((125-grundmerkmale.eingabeBreite)^2)","()","(125-grundmerkmale.eingabeBreite)^2"). +coom_binary("(125-grundmerkmale.eingabeBreite)^2","(125-grundmerkmale.eingabeBreite)","^","2"). +coom_unary("(125-grundmerkmale.eingabeBreite)","()","125-grundmerkmale.eingabeBreite"). +coom_binary("125-grundmerkmale.eingabeBreite","125","-","grundmerkmale.eingabeBreite"). +coom_number("125",125). +coom_path("grundmerkmale.eingabeBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.eingabeBreite",1,"eingabeBreite"). +coom_number("2",2). + +coom_behavior(17). +coom_context(17,"Unterposition"). +coom_require(17,"grundmerkmale.debugValues.atanValue=atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))"). +coom_binary("grundmerkmale.debugValues.atanValue=atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))","grundmerkmale.debugValues.atanValue","=","atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))"). +coom_path("grundmerkmale.debugValues.atanValue",0,"grundmerkmale"). +coom_path("grundmerkmale.debugValues.atanValue",1,"debugValues"). +coom_path("grundmerkmale.debugValues.atanValue",2,"atanValue"). +coom_function("Unterposition","atan(((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))))","atan","((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)))"). +coom_unary("((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)))","()","(125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))"). +coom_binary("(125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","(125-grundmerkmale.eingabeBreite)","/","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))"). +coom_unary("(125-grundmerkmale.eingabeBreite)","()","125-grundmerkmale.eingabeBreite"). +coom_binary("125-grundmerkmale.eingabeBreite","125","-","grundmerkmale.eingabeBreite"). +coom_number("125",125). +coom_path("grundmerkmale.eingabeBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.eingabeBreite",1,"eingabeBreite"). +coom_unary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","()","(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)"). +coom_binary("(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)","(grundmerkmale.montagehoehe-8.82)","+","(90-grundmerkmale.durchgangshoehe)"). +coom_unary("(grundmerkmale.montagehoehe-8.82)","()","grundmerkmale.montagehoehe-8.82"). +coom_binary("grundmerkmale.montagehoehe-8.82","grundmerkmale.montagehoehe","-","8.82"). +coom_path("grundmerkmale.montagehoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.montagehoehe",1,"montagehoehe"). +coom_unary("(90-grundmerkmale.durchgangshoehe)","()","90-grundmerkmale.durchgangshoehe"). +coom_binary("90-grundmerkmale.durchgangshoehe","90","-","grundmerkmale.durchgangshoehe"). +coom_number("90",90). +coom_path("grundmerkmale.durchgangshoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.durchgangshoehe",1,"durchgangshoehe"). + +coom_behavior(18). +coom_context(18,"Unterposition"). +coom_require(18,"grundmerkmale.debugValues.acosArg=(48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))"). +coom_binary("grundmerkmale.debugValues.acosArg=(48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))","grundmerkmale.debugValues.acosArg","=","(48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))"). +coom_path("grundmerkmale.debugValues.acosArg",0,"grundmerkmale"). +coom_path("grundmerkmale.debugValues.acosArg",1,"debugValues"). +coom_path("grundmerkmale.debugValues.acosArg",2,"acosArg"). +coom_unary("(48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))))","()","48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))"). +coom_binary("48.4985/sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))","48.4985","/","sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))"). +coom_function("Unterposition","sqrt(((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)))","sqrt","((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))"). +coom_unary("((((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2))","()","(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)"). +coom_binary("(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)+((125-grundmerkmale.eingabeBreite)^2)","(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)","+","((125-grundmerkmale.eingabeBreite)^2)"). +coom_unary("(((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2)","()","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2"). +coom_binary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))^2","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","^","2"). +coom_unary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","()","(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)"). +coom_binary("(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)","(grundmerkmale.montagehoehe-8.82)","+","(90-grundmerkmale.durchgangshoehe)"). +coom_unary("(grundmerkmale.montagehoehe-8.82)","()","grundmerkmale.montagehoehe-8.82"). +coom_binary("grundmerkmale.montagehoehe-8.82","grundmerkmale.montagehoehe","-","8.82"). +coom_path("grundmerkmale.montagehoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.montagehoehe",1,"montagehoehe"). +coom_unary("(90-grundmerkmale.durchgangshoehe)","()","90-grundmerkmale.durchgangshoehe"). +coom_binary("90-grundmerkmale.durchgangshoehe","90","-","grundmerkmale.durchgangshoehe"). +coom_number("90",90). +coom_path("grundmerkmale.durchgangshoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.durchgangshoehe",1,"durchgangshoehe"). +coom_number("2",2). +coom_unary("((125-grundmerkmale.eingabeBreite)^2)","()","(125-grundmerkmale.eingabeBreite)^2"). +coom_binary("(125-grundmerkmale.eingabeBreite)^2","(125-grundmerkmale.eingabeBreite)","^","2"). +coom_unary("(125-grundmerkmale.eingabeBreite)","()","125-grundmerkmale.eingabeBreite"). +coom_binary("125-grundmerkmale.eingabeBreite","125","-","grundmerkmale.eingabeBreite"). +coom_number("125",125). +coom_path("grundmerkmale.eingabeBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.eingabeBreite",1,"eingabeBreite"). +coom_number("2",2). + +coom_behavior(19). +coom_context(19,"Unterposition"). +coom_require(19,"grundmerkmale.debugValues.atanArg=((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)))"). +coom_binary("grundmerkmale.debugValues.atanArg=((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)))","grundmerkmale.debugValues.atanArg","=","((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)))"). +coom_path("grundmerkmale.debugValues.atanArg",0,"grundmerkmale"). +coom_path("grundmerkmale.debugValues.atanArg",1,"debugValues"). +coom_path("grundmerkmale.debugValues.atanArg",2,"atanArg"). +coom_unary("((125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)))","()","(125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))"). +coom_binary("(125-grundmerkmale.eingabeBreite)/((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","(125-grundmerkmale.eingabeBreite)","/","((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))"). +coom_unary("(125-grundmerkmale.eingabeBreite)","()","125-grundmerkmale.eingabeBreite"). +coom_binary("125-grundmerkmale.eingabeBreite","125","-","grundmerkmale.eingabeBreite"). +coom_number("125",125). +coom_path("grundmerkmale.eingabeBreite",0,"grundmerkmale"). +coom_path("grundmerkmale.eingabeBreite",1,"eingabeBreite"). +coom_unary("((grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe))","()","(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)"). +coom_binary("(grundmerkmale.montagehoehe-8.82)+(90-grundmerkmale.durchgangshoehe)","(grundmerkmale.montagehoehe-8.82)","+","(90-grundmerkmale.durchgangshoehe)"). +coom_unary("(grundmerkmale.montagehoehe-8.82)","()","grundmerkmale.montagehoehe-8.82"). +coom_binary("grundmerkmale.montagehoehe-8.82","grundmerkmale.montagehoehe","-","8.82"). +coom_path("grundmerkmale.montagehoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.montagehoehe",1,"montagehoehe"). +coom_unary("(90-grundmerkmale.durchgangshoehe)","()","90-grundmerkmale.durchgangshoehe"). +coom_binary("90-grundmerkmale.durchgangshoehe","90","-","grundmerkmale.durchgangshoehe"). +coom_number("90",90). +coom_path("grundmerkmale.durchgangshoehe",0,"grundmerkmale"). +coom_path("grundmerkmale.durchgangshoehe",1,"durchgangshoehe"). + +coom_behavior(20). +coom_context(20,"Unterposition"). +coom_imply(20,"konstruktion.pfostenLI.unterposition","this"). +coom_path("konstruktion.pfostenLI.unterposition",0,"konstruktion"). +coom_path("konstruktion.pfostenLI.unterposition",1,"pfostenLI"). +coom_path("konstruktion.pfostenLI.unterposition",2,"unterposition"). +coom_path("this",0,"this"). + +coom_behavior(21). +coom_context(21,"Unterposition"). +coom_imply(21,"konstruktion.pfostenRE.unterposition","this"). +coom_path("konstruktion.pfostenRE.unterposition",0,"konstruktion"). +coom_path("konstruktion.pfostenRE.unterposition",1,"pfostenRE"). +coom_path("konstruktion.pfostenRE.unterposition",2,"unterposition"). +coom_path("this",0,"this"). diff --git a/examples/coom/shadow-master-v0.2.coom b/examples/coom/shadow-master-v0.2.coom new file mode 100644 index 0000000..11e71ea --- /dev/null +++ b/examples/coom/shadow-master-v0.2.coom @@ -0,0 +1,237 @@ +product { + 1..25 Unterposition unterposition +} + +structure Unterposition { + // string id + // reference Unterposition previous + // reference Unterposition next + Grundmerkmale grundmerkmale + Konstruktion konstruktion + Cover cover +} + +structure Grundmerkmale { + num/mm montagehoehe + num/mm durchgangshoehe + num/mm laenge + num.#/mm eingabeBreite + num.#/mm bestellBreite + Debug debugValues + num.##/qm flaeche + num.##/Grad neigungswinkelAnlage + num.##/Kg weight +} + +structure Debug { + num.###/mm deltaHoehe + num/mm deltaBreite + num.###/mm deltaHoehePow2 + num/mm deltaBreitePow2 + num.###/mm sqrtValue + num.## atanValue + num.## acosValue + num.###### atanArg + num.###### acosArg +} + +structure Konstruktion { + Pfosten pfostenLI + Pfosten pfostenRE +} + +structure Pfosten { + num.####/mm km_gesamthoehe + num.#### km_mittePfosten + num.#### ueberstand + reference Unterposition unterposition + TypPfosten typPfosten +} + +enumeration TypPfosten { + _Ohne + _Starr + _Hoehenverstellbar + _Doppelpfosten +} + +enumeration Cover { + attribute num/gramm weight + + _AcrylLumera = ( 1495 ) + _AcrylPerfora = ( 1238 ) + _AcrylAllWeather = ( 2600 ) + _AcrylStandardFremd = ( 800 ) + _AcrylUniQuer = ( 599 ) + _AcrylUniQuerFremd = ( 673 ) + _KombiAcryl = ( 2598 ) + _KombiSoltis = ( 2293 ) + _Satinee = ( 1487 ) + _Screen = ( 2499 ) +} + + +behavior Pfosten { + require ueberstand = (unterposition.grundmerkmale.eingabeBreite - km_mittePfosten) +} + +behavior Pfosten { + require km_gesamthoehe = (unterposition.grundmerkmale.durchgangshoehe + (tan(unterposition.grundmerkmale.neigungswinkelAnlage) * ueberstand)) +} + +behavior Pfosten { + require ueberstand > 105 +} + +behavior Pfosten { + require km_mittePfosten < 4000 +} + +behavior Pfosten { + require km_gesamthoehe > 1000 +} + +behavior Pfosten { + require km_gesamthoehe < 3200 +} + +behavior Pfosten { + condition km_gesamthoehe > 2200 + require typPfosten != _Doppelpfosten +} + +// behavior Pfosten { +// default ueberstand = 150 +// } + +// behavior Pfosten { +// default km_mittePfosten = 3000 +// } + +// behavior Pfosten { +// default km_gesamthoehe = 2000 +// } + +behavior Unterposition { + require grundmerkmale.neigungswinkelAnlage = (atan(((125 - grundmerkmale.eingabeBreite) / ((grundmerkmale.montagehoehe - 8.82) + (90 - grundmerkmale.durchgangshoehe)))) + acos((48.4985 / sqrt(((((grundmerkmale.montagehoehe - 8.82) + (90 - grundmerkmale.durchgangshoehe)) ^ 2) + ((125 - grundmerkmale.eingabeBreite) ^ 2)))))) +} + +behavior Unterposition { + require grundmerkmale.bestellBreite = (grundmerkmale.eingabeBreite + (tan(grundmerkmale.neigungswinkelAnlage) * 80)) +} + +behavior Unterposition { + require grundmerkmale.flaeche = (grundmerkmale.laenge * (grundmerkmale.bestellBreite / 1000000)) +} + +behavior Unterposition { + require grundmerkmale.weight = (grundmerkmale.flaeche * (cover.weight / 1000)) +} + +behavior Unterposition { + require grundmerkmale.debugValues.deltaHoehe = ((grundmerkmale.montagehoehe - 8.82) + (90 - grundmerkmale.durchgangshoehe)) +} + +behavior Unterposition { + require grundmerkmale.debugValues.deltaBreite = (125 - grundmerkmale.eingabeBreite) +} + +behavior Unterposition { + require grundmerkmale.debugValues.deltaBreitePow2 = ((125 - grundmerkmale.eingabeBreite) ^ 2) +} + +behavior Unterposition { + require grundmerkmale.debugValues.deltaHoehePow2 = (((grundmerkmale.montagehoehe - 8.82) + (90 - grundmerkmale.durchgangshoehe)) ^ 2) +} + +behavior Unterposition { + require grundmerkmale.debugValues.sqrtValue = sqrt(((((grundmerkmale.montagehoehe - 8.82) + (90 - grundmerkmale.durchgangshoehe)) ^ 2) + ((125 - grundmerkmale.eingabeBreite) ^ 2))) +} + +behavior Unterposition { + require grundmerkmale.debugValues.acosValue = acos((48.4985 / sqrt(((((grundmerkmale.montagehoehe - 8.82) + (90 - grundmerkmale.durchgangshoehe)) ^ 2) + ((125 - grundmerkmale.eingabeBreite) ^ 2))))) +} + +behavior Unterposition { + require grundmerkmale.debugValues.atanValue = atan(((125 - grundmerkmale.eingabeBreite) / ((grundmerkmale.montagehoehe - 8.82) + (90 - grundmerkmale.durchgangshoehe)))) +} + +behavior Unterposition { + require grundmerkmale.debugValues.acosArg = (48.4985 / sqrt(((((grundmerkmale.montagehoehe - 8.82) + (90 - grundmerkmale.durchgangshoehe)) ^ 2) + ((125 - grundmerkmale.eingabeBreite) ^ 2)))) +} + +behavior Unterposition { + require grundmerkmale.debugValues.atanArg = ((125 - grundmerkmale.eingabeBreite) / ((grundmerkmale.montagehoehe - 8.82) + (90 - grundmerkmale.durchgangshoehe))) +} + +behavior Unterposition { + imply konstruktion.pfostenLI.unterposition = this +} + +behavior Unterposition { + imply konstruktion.pfostenRE.unterposition = this +} + +// behavior Unterposition { +// default cover = _AcrylAllWeather +// } + +// behavior Pfosten { +// default typPfosten = _Starr +// } + +// behavior Grundmerkmale { +// readonly bestellBreite +// } + +// behavior Grundmerkmale { +// readonly flaeche +// } + +// behavior Grundmerkmale { +// readonly weight +// } + +// behavior Grundmerkmale { +// readonly debugValues.deltaHoehe +// } + +// behavior Grundmerkmale { +// readonly debugValues.deltaBreite +// } + +// behavior Grundmerkmale { +// readonly debugValues.deltaHoehePow2 +// } + +// behavior Grundmerkmale { +// readonly debugValues.deltaBreitePow2 +// } + +// behavior Grundmerkmale { +// readonly debugValues.sqrtValue +// } + +// behavior Grundmerkmale { +// readonly debugValues.atanValue +// } + +// behavior Grundmerkmale { +// readonly debugValues.acosValue +// } + +// behavior Grundmerkmale { +// readonly debugValues.atanArg +// } + +// behavior Grundmerkmale { +// readonly debugValues.acosArg +// } + +// behavior Grundmerkmale { +// readonly neigungswinkelAnlage +// } + +// behavior { +// readonly root.unterposition[0].id +// } diff --git a/noxfile.py b/noxfile.py index 8117809..dc87cff 100644 --- a/noxfile.py +++ b/noxfile.py @@ -5,7 +5,7 @@ nox.options.sessions = "lint_pylint", "typecheck", "test" EDITABLE_TESTS = True -PYTHON_VERSIONS = ["3.12"] +PYTHON_VERSIONS = ["3.11"] if "GITHUB_ACTIONS" in os.environ: PYTHON_VERSIONS = ["3.11"] EDITABLE_TESTS = False diff --git a/tests/__init__.py b/tests/__init__.py index 848e8fd..36daf1a 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -113,7 +113,7 @@ def __getattr__(self, attr): # type: ignore except AttributeError: return self.__get_global_handler(attr) - def solve( # type: ignore # pylint: disable=too-many-arguments + def solve( # type: ignore # pylint: disable=too-many-arguments, too-many-positional-arguments self, on_model=None, on_unsat=None,