{"id":818,"date":"2011-07-27T17:06:19","date_gmt":"2011-07-27T16:06:19","guid":{"rendered":"http:\/\/roboblog.fatal-fury.de\/?page_id=818"},"modified":"2023-03-07T23:31:35","modified_gmt":"2023-03-07T22:31:35","slug":"_notiz","status":"publish","type":"page","link":"http:\/\/roboblog.fatal-fury.de\/?page_id=818","title":{"rendered":"+notiz"},"content":{"rendered":"<p>QGIS usage<br \/>\n----------<\/p>\n<p>* Haltungs LUT durch join realisiert<br \/>\nattribute( get_feature('test_haltungen', 'NR', attribute($currentfeature, 'AB')), 'Bez')<\/p>\n<p>Netzlogik<\/p>\n<p>* Fehlenden Haltungen \/ Unterbrechungen<br \/>\nHaltungsfilter \"Z1\" <> 0 and \"AB\" < 1000 and \"EntwaesArt\" <> 'KR'<\/p>\n<p>* Alleinstehende Haltungen<br \/>\nHaltungsfilter:  \"Z1\" = 0 and \"AB\" < 1000 and \"EntwaesArt\" <> 'KR'<\/p>\n<p>* L\u00e4nge ungewohenlich<br \/>\nHaltungsfilter:  \"L [m]\" >  ($length + 5)<\/p>\n<p>* Weitere komische Stellen<br \/>\nregexp_match( \"SchBezUnte\", '[A-Z]' )  and \"AB\" < 1000  and \"Z1\" <> 0 and \"EntwaesArt\" <> 'KR'<\/p>\n<p>* Fehlerhafte Sohlhoehen<br \/>\n \"HSA [NN]\" +  \"B [cm]\"\/100 + 0.1 >  \"HD [NN]\"<\/p>\n<p>* Negtives Gefaelle<br \/>\n \"HSA [NN]\" <  \"HSE [NN]\" -0.03\n\nKataster\n\n* Geb\u00e4ude\/Flurstuecksfragmente\n  $perimeter \/ sqrt($area) > 20<\/p>\n<p>MPI Debug<br \/>\n---------<br \/>\nWIth OpenMPI<br \/>\nmpiexec  -n 16 xterm -e gdb -ex \"run\" --args  \/home\/kater\/bin\/inka_kopplung Merck_12_01.dat<\/p>\n<p>https:\/\/www.open-mpi.org\/faq\/?category=tuning#setting-mca-params<br \/>\nhttps:\/\/www.open-mpi.org\/faq\/?category=debugging<br \/>\n export OMPI_MCA_mpi_abort_print_stack=1<br \/>\nexport  OMPI_MCA_mpi_abort_delay=-1<\/p>\n<p>GIT<br \/>\n---<br \/>\nEinen Ordner mit SHA1 commit ID auschecken. Relative Pathangabe fuehrt zu<br \/>\nerror: pathspec 'examples_detlev\/regtests\/1\/' did not match any file(s) known to git.<br \/>\nDaher mit ..\/ umgehen.<br \/>\ngit checkout 43840083a13cb3781bf3739666b94a64e45e8e63  ..\/regtests\/8<br \/>\nF\u00fcr SHA ID entweder gitk oder<br \/>\nregtests$ git log --follow 8<br \/>\nVllt hilft auch ein<br \/>\n git fetch ?<\/p>\n<p>Convert surver DGM to XYZ<br \/>\nfor i in *.grd; do  gdal_translate  -of XYZ  $i output\/$i.xyz; done<\/p>\n<p>mencoder \"mf:\/\/*.jpg\" -mf fps=2 -o video.avi -ovc lavc -lavcopts vcodec=mpeg4<br \/>\nmplayer -ao pcm:fast:file=audio.wav -vo null -vc null video.avi<br \/>\nlame -V0 -q0 --vbr-new audio.wav audio.mp3<br \/>\n# Teil vom Video ausschneiden<br \/>\nffmpeg -i input.webm  -ss 00:46:50 -c copy test.webm<\/p>\n<p>ogr2ogr -f \"ESRI Shapefile\" -where \"GEB_ART <> 'G2363'\" test.shp ..\/frankfurt\/SGK_Shape_2012\/GEBAEUDE.shp<br \/>\nogr2ogr -f \"ESRI Shapefile\" -where \"OBJEKTART = '2500'\" wasserspiegel.shp 2475340000_VG_000_LAENGS_LMZ.shp<\/p>\n<p>#<br \/>\n# -Wextra                          This are some extra warning flags that are not enabled by -Wall<br \/>\n#<br \/>\n# Enable this tests from time to time<br \/>\n#<br \/>\n# -Wsuggest-attribute=const        Warn about functions that might be candidates for attributes const.<br \/>\n# -Wsuggest-final-types            Warn about types with virtual methods where code quality would be improved if the type were declared with the C++11 final specifier<br \/>\n# -Wsuggest-final-methods          Warn about virtual methods where code quality would be improved if the method were declared with the C++11 final specifier<br \/>\n#                                  Use -Wsuggest-final-types. Use  link time optimization for both.<br \/>\n# -Weffc++                         Warn about violations of the following style guidelines from Scott Meyers' Effective C++ series of books<br \/>\n# -Wdouble-promotion               Give a warning when a value of type float is implicitly promoted to double.<br \/>\n# -Wconversion                     Warn for implicit conversions that may alter a value<br \/>\n# -Wzero-as-null-pointer-constant  Warn when a literal '0' is used as null pointer constant.<br \/>\n# -Wlogical-op                     Warn about suspicious uses of logical operators in expressions.<br \/>\n# -Wpadded                         Warn if padding is included in a structure<br \/>\n# -Wredundant-decls                Warn if anything is declared more than once in the same scope<br \/>\n# -Wvector-operation-performance   Warn if vector operation is not implemented via SIMD capabilities<\/p>\n<p># link time optimazion<br \/>\n#QMAKE_CXXFLAGS += -flto<br \/>\n#QMAKE_LFLAGS += -flto<\/p>\n<pre><code>\r\n# The QT library is not free of warnings. If we enable e.g. -Wconversion we see a lot\r\n# of warnings from Qt we cant fix nor care. Here is a simple way to disable warnings\r\n# for external framwork. Just  include library headers using -isystem instead of -I.\r\n# This will make them \"system headers\" and GCC won't report warnings for them.\r\n# This still trigger some warnings due to inline of code\r\nQMAKE_CXXFLAGS += -isystem<span class='MathJax_Preview'><img src='http:\/\/roboblog.fatal-fury.de\/wp-content\/plugins\/latex\/cache\/tex_a0571a755be8741f29904cbc9ebf4db9.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script>[QT_INSTALL_HEADERS]\/QtGui\r\nQMAKE_CXXFLAGS += -isystem<span class='MathJax_Preview'><img src='http:\/\/roboblog.fatal-fury.de\/wp-content\/plugins\/latex\/cache\/tex_feea1f6a8f8a3bb59e355007cc0a06b0.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script>[QT_INSTALL_HEADERS]\/QtOpenGL\r\nQMAKE_CXXFLAGS += -isystem$$[QT_INSTALL_HEADERS]\/QtScript\r\n<\/code><\/pre>\n<p>fast todo<br \/>\n* dctor base class virtual<br \/>\n* ctor mit default arg explicit<br \/>\n* const getter die pointer zur\u00fcckgeben auch pointer const machen, wenn die klasse owner vom object ist.<\/p>\n<p>@@ -586,6 +586,7 @@ void DomainController::setRotateSelectionMode(bool enabled) {<br \/>\n         connect(d->rotationDialog, SIGNAL(accepted()), this, SLOT(acceptRotation()));<\/p>\n<p>         connect(d->rotationDialog, SIGNAL(angleChanged(qreal)), d->helper, SLOT(setAngle(qreal)));<br \/>\n+        connect(d->rotationDialog, SIGNAL(angleChanged(qreal)), d->helper, SLOT(updateRotateItem())); << unn\u00f6tig\n\n\n\n\nunused funktion parameter\n@@ -39,10 +43,10 @@ RotationDialog::~RotationDialog()\n \/*\n  * redirect of signal slot int \/ double problem\n  *\/\n-void RotationDialog::sliderChanged(int n)\n+void RotationDialog::sliderMoved(int)\n {\n-    ui->doubleSpinBox_Angle->setValue(n);<br \/>\n-    emit angleChanged(n);<br \/>\n+    ui->doubleSpinBox_Angle->setValue(ui->horizontalSlider->value());<br \/>\n+    emit angleChanged(ui->horizontalSlider->value());<br \/>\n }<\/p>\n<p>Domainview kennst polynodes. richtig so?<br \/>\n+#include \"GraphicsPolyNodeItem.h\"<\/p>\n<p><u><strong>GUI<\/strong><\/u><br \/>\n- Projekt\/File open Window mit extraspecial Optionen (steht iwo im Notizbuch)<br \/>\n- Sowas wie eine Lupe definieren. Extra (Rechner) Windows was irgendwas beobachtet. Bereiche im Netz? Files auf externen Rechnern?<br \/>\n- Im Debug\/About Window (Notizen siehe irgendwo anders (Pidgin)) die Ausgabe von \"file binary\"<\/p>\n<p>- Windows Statistics. Brauchen ein Plot. qwt geeignet?<\/p>\n<p>- Wie bei gimp filter kleine vorher\/nachher bilder vom mesh wenn man operationen darauf ausf\u00fchrt.<\/p>\n<p>- googlemaps in gui bider und mesh dr\u00fcber rendern<\/p>\n<p>- QGraphicsGeoMap kann man das auch f\u00fcr nicht mobility devices nutzen?<\/p>\n<p>- GraphicsNodeItems editmode beschreibt ne implementoerung<br \/>\nhttp:\/\/www.informit.com\/articles\/article.aspx?p=1405545&seqNum=4<\/p>\n<p><u><strong>GUI LIB<\/strong><\/u><br \/>\n- Dynamic Mesh\/ static ordered mesh.<br \/>\n  Mit Quadtrees hatten wir ja starke Probleme. Warum nicht das Mesh nach X Coord sortiere wie in<br \/>\ndouble nodes check routine von aron. Punkt und Bereichsabfragen sind damit auch machbar. Wenn man y nicht mitsortiert<br \/>\nist das auch nicht sonderlich aufwendig.<br \/>\nEs braucht noch ein mapping zur den nicht sortierten Daten um ueber die orignal Eingangsdaten zu iterieren.<br \/>\nNACHTEIL: Zu kleine Bereiche k\u00f6nnen erstmal nicht zu einem Polygon zusammengefasst werden(ideen?)<\/p>\n<p>- Polygon Algo zum vereinfachen? http:\/\/130.83.152.138\/temp\/shape_matching_mobilesensing.png<\/p>\n<p>- Teilmesh aus einem gro\u00dfes Mesh herauskopieren um Operationen darauf schneller durchf\u00fchren zu k\u00f6nnen.<br \/>\nSelect by Ele\/node\/rect. Oderandere select T1echniken iwo hier auf der Seite.<\/p>\n<p>- Mesh \u00fcber Netzwerk laden. Test mit Proxyadapter und Image statt Mesg. Client sagt welchen Bereich und Remote PC<br \/>\nrendert es und schickt es zur\u00fcck. Alterantiv werden nur die Items in diesem Bereich zur\u00fcckgeschickt.<br \/>\nMit QCache cachen.<\/p>\n<p>- Class ColoredMesh. H\u00e4lt ein Image was kleiner ist als das Netz.  XY der Nodes auf Pixel des Bildes mappen und pixel.counter erh\u00f6hen. counter dann auf farbe mappen. Danach sind schwarze Bereiche im Bild Inseln. So die Inseln bestimmen?<br \/>\nErledigt 12.2013<br \/>\nparvisu. Der Rand wurde so recht gut bestimmt. Das Bild noch mit BV tools kurz nach bearbeiten (dilate) und pavlidis f\u00fcr die Kontur des Randes. Inseln finden sich nicht sehr gut, da kleine Inseln etwa so gro\u00df sind wie die Aufl\u00f6sung des Netzes.<\/p>\n<p>- PatchIterator Zugriff auf alle angeschlossenen nodes und elements von allen nodes. Braucht es dazu abgeleitete nodes und mesh klassen?<\/p>\n<p>- ElementIterator welcher ein Pointer auf das Nodearray hergibt,so dass man die nodeIDs aus den eementen rauszieht und access aufs node hat.<br \/>\nErledigt mit ElementDekorator und spezielle Template Klasse Iterator fpr Elements.<\/p>\n<p>- Mesh Statistics neue Klasse erstellen.<br \/>\nAngerungen welche Informationen bereit gestellt werden k\u00f6nnen hier: https:\/\/romeo.univ-reims.fr\/documents\/fluent\/tgrid\/ug\/chp15.pdf<\/p>\n<p>- Pattern Locator und Positions<\/p>\n<p><u><strong>Unwichtiges f\u00fcr die LIB<\/strong><\/u><br \/>\n- Q_LIKELEY Q_UNLIKELEY<\/p>\n<p>- Mesh Boundary Area - Sum Element Area = Insel Area. Ber\u00fccksichtigt man noch die Insel Areas und bleibt weiterhin eine<br \/>\ngro\u00dfe Differenz, dann hat man ein unbekanntes Loch oder vermaschte Inseln im Netz.<\/p>\n<p>- Der Algo von Dijkstra findet die L\u00e4nge des k\u00fcrzesten Path von einem Knoten zu den andern. (Mit etwas Aufwand kann man auch den Path selbst mit abspeichern). Er benutzt die Kantenl\u00e4ngen dazu. Was ist, wenn man die Kantenl\u00e4nge durch die Node IDs der Kante ersetzt? Findet er dann ein Path durchs Netz optimiert f\u00fcr Array Zugriffe, r\u00e4umliche Datenlokalit\u00e4t?<\/p>\n<p>- Sortierung ohne Topologie. Nur Anhand vom Elementcenter sortieren. Das unterste zuerst und dann das am n\u00e4chsten.<\/p>\n<p>- doppelte knoten finden mit HSet\/QHash +  MapReduce Hashing<br \/>\nODER eine art fuzzy search f\u00fcr 2d punkte. m\u00f6glicherweise sehr einfach indem man die letzten stellen der zahl abschneidet um so die unsch\u00e4rfe festzulegen. dann hashen.<\/p>\n<p><u><strong>Faster Code Todo<\/strong><\/u><br \/>\nMemoization<br \/>\nhttp:\/\/en.wikipedia.org\/wiki\/Memoization<br \/>\nSo eine Art cache. Genauerer Unterschied? Kann man wpm\u00f6glich f\u00fcr  cadxy nutzen. C+ wrapper von 1998 mit paper http:\/\/apl.jhu.edu\/~paulmac\/c++-memoization.html<\/p>\n<p><u><strong>PETSc<\/strong><\/u><br \/>\nPETSc's solver for block matrices PCFieldsplit http:\/\/www.mcs.anl.gov\/petsc\/petsc-3.3\/docs\/manualpages\/PC\/PCFIELDSPLIT.html#PCFIELDSPLIT is what you need. More information on fieldsplit is given in section 4.5 of the manual.<\/p>\n<p>-------------------------------------------------------------------------<br \/>\n<a href=\"http:\/\/www.heise.de\/ct\/hotline\/Linux-Prozesse-an-CPU-Kerne-binden-1002732.html\">http:\/\/www.heise.de\/ct\/hotline\/Linux-Prozesse-an-CPU-Kerne-binden-1002732.html<\/a><br \/>\ntaskset -c 0-2 pelfe<br \/>\nCache speed tests. Alle Threads auf eine CPU binden, valgrind TLB\/Cache misses, nur ein thread pro cpu. Test f\u00fcr nur lesend, und einen f\u00fcr schreibend, so dass sich die threads gegenseitig aus dem cache werfen<\/p>\n<p>-------------------------------------------------------------------------<\/p>\n<blockquote><p>\nYou can run the code with '-info' - and look for 'stash' - that gives<br \/>\nthe message lenghts that got commuicated for matrix assembly.<\/p><\/blockquote>\n<p><a href=\"https:\/\/lists.mcs.anl.gov\/mailman\/htdig\/petsc-users\/2009-August\/004937.html\">https:\/\/lists.mcs.anl.gov\/mailman\/htdig\/petsc-users\/2009-August\/004937.html<\/a><\/p>\n<blockquote><p>><br \/>\n>  Okay, look at VecScatterBegin\/End for 24 and 48 cores (I am guessing you<br \/>\n> have 4 16-core chips, but please figure this out).<br \/>\n> The messages are logged in ScatterBegin, and the time is logged in<br \/>\n> ScatterEnd. From 24 to 48 cores the time is cut in half.<br \/>\n> If you were only communicating the boundary, this is completely backwards,<br \/>\n> so you are communicating a fair fraction of ALL<br \/>\n> the values in a subdomain. Figure out why your partition is so screwed up<br \/>\n> and this will go away.<br \/>\n><br \/>\n><br \/>\n> What do you mean by \"If you were only communicating the boundary, this is<br \/>\n> completely backwards, so you are communicating a fair fraction of ALL the<br \/>\n> values in a subdomain\"?<br \/>\n><\/p>\n<p>If you have 48 partitions instead of 24, you have a larger interface, so<br \/>\nAssemblyEnd() should take<br \/>\nslightly longer. However, your AssemblyEnd() takes HALF the time, which<br \/>\nmeans its communicating<br \/>\nmuch fewer values, which means you are not sending interface values, you<br \/>\nare sending interior values,<br \/>\nsince the interior shrinks when you have more partitions.<\/p>\n<p>What this probably means is that your assembly routines are screwed up, and<br \/>\nsending data all over the place.<\/p><\/blockquote>\n<p><a href=\"https:\/\/lists.mcs.anl.gov\/mailman\/htdig\/petsc-users\/2012-October\/015401.html\">https:\/\/lists.mcs.anl.gov\/mailman\/htdig\/petsc-users\/2012-October\/015401.html<\/a><\/p>\n<p><u><strong>Openseamap<\/strong><\/u><\/p>\n<ol>\n<li>Einige Karten runterladbar. Im Browser kann man aber die ganze Welt anzeigen lassen. Wie kommt man an die restlichen Karten?<\/li>\n<li>Karten in verschiedenen Formaten erh\u00e4ltlich<\/li>\n<ul>\n<li>KAP non Maptech BSB\/KAP<br \/>\nA BSB image file has a .KAP extension and can be optionally accompanied by a .BSB file which stores further cartographic data and relates multiple .KAPs together. <a href=\"http:\/\/libbsb.sourceforge.net\/\">libbsb<\/a> is a portable C library for reading and writing BSB format image files. Typically used for nautical charts, BSB charts use the .KAP or .CAP extension and store cartographic information in addition to a run-length encoded raster image. A number of utilities to convert and work with BSB charts are included in the libbsb package. e.g. bsb2tif - convert BSB image to TIFF format. The BSB file format stores raster image data in a run-length encoded binary form along with ASCII text describing the projection, datum and other information necessary for GIS application<\/li>\n<li>WCI SeaClear<br \/>\nSeaClear is a PC based chart plotter for Windows.<\/li>\n<li>PNG Bilddatei (randlos)<\/li>\n<li>JPR Fugawi Kalibrierungsdatei<br \/>\nNeed more research <a href=\"http:\/\/www.fugawi.com\/web\/support\/utilities_and_docs\/utilities_index.htm\">http:\/\/www.fugawi.com\/web\/support\/utilities_and_docs\/utilities_index.htm<\/a><\/li>\n<li>CAL TTQV  Kalibrierungsdatei<br \/>\nTouratech QV (auch TTQV, Abk\u00fcrzung f\u00fcr Touratech Quo Vadis) ist der Markenname der GPS-Software des Unternehmens Touratech AG. Touratech QV unterst\u00fctzt die Tourenplanung durch das Laden von Wegpunkten, Routen und Tracks auf oder vom GPS-Empf\u00e4nger und erm\u00f6glicht Echtzeitnavigation zu Land, Wasser und Luft. Touratech QV unterst\u00fctzt das Scannen und Kalibrieren eigener Landkarten. Touratech QV l\u00e4uft auf Windows PC. Voraussetzung ist ein NMEA oder Garmin-Protokoll kompatibler-GPS-Empf\u00e4nger. <\/li>\n<li>KMZ  Keyhole Markup Language (KML gezippt) Import f\u00fcr Garmin oder Google<br \/>\nKeyhole Markup Language (KML) ist eine Auszeichnungssprache zur Beschreibung von Geodaten f\u00fcr die Client-Komponenten der Programme Google Earth und Google Maps. KML befolgt die XML-Syntax und ist ein Standard des Open Geospatial Consortium.<br \/>\nAls geod\u00e4tisches Referenzsystem wird in KML-Dokumenten ausschlie\u00dflich das World Geodetic System 1984 verwendet, d.h. s\u00e4mtliche Koordinaten werden mit geografischer L\u00e4nge und Breite sowie, falls vorhanden, H\u00f6he \u00fcber Meer angegeben. Die H\u00f6he bezieht sich dabei auf das WGS84 EGM96 Geoid.<br \/>\nNeben Google Earth unterst\u00fctzt das freie KDE-Programm Marble ebenfalls das KML-Format zur Routenbetrachtung, <\/li>\n<\/ul>\n<\/ol>\n<p>Bevorzugtes Format wird woh KML sein.<\/p>\n<p><u><strong>Openstreepmap<\/strong><\/u><\/p>\n<p>http:\/\/wiki.openstreetmap.org\/wiki\/Main_Page<br \/>\nWoher kommen die Daten? GPS, Luftbilder, Karten, Daten im XML Format erh\u00e4ltlich.<\/p>\n<p>XML Pros:<br \/>\n* human readable cause of clear structure<br \/>\n* machine independent cause of exact definitions e.g. charactersets, XML schema definitions, DTD,\u00bf<br \/>\n* ready to use parsers for general XML that can be customized for a concrete file format<br \/>\n* good compression ratio<\/p>\n<p>XML cons:<br \/>\n* very huge files<br \/>\n* might need to decompress before<br \/>\n* parsing takes a lot of time<\/p>\n<p>Es gibt zus\u00e4tzlich zu s\u00e4mtlichen Wegen\/Strassen, Hochspannungsnetze und Luftbilder. H\u00e4fen, Seekarten und Gew\u00e4sser sowie Bauwerke und Einrichtungen im Zusammenhang mit Gew\u00e4ssern.<br \/>\nEs gibt teilweise detailierte Informationen \u00fcber die Art des Gew\u00e4ssers\/Fluss, verschiedene H\u00e4fen, Strand, Hafenmauer bis hin zu Telefonzellen, Spielpl\u00e4tzen, Toiletten, Parkpl\u00e4tzen und Fischbr\u00f6tchenbuden.<br \/>\nNeben OpenStreetMap gibt es OpenSeaMap, welches Wassertiefen und sonstige Seezeichen enth\u00e4lt.<\/p>\n<p>Es existiern viele Softwareprojekte mit denne die Daten gerendert oder ge\u00e4ndert werden k\u00f6nnen.<\/p>\n<p>googlemap:<br \/>\nLizensprobleme. Daten d\u00fcrfen nicht frei benutzt werden.<\/p>\n<p>K\u00fcstenlinien mittels Bildverarbeitung ermitteln:<br \/>\nSehr aufw\u00e4ndig und fehleranf\u00e4llig. Die Ausgaben des Algorithmus m\u00fcssen kontrolliert werden. Es werden keine Informationen gewonnen die man nicht schon durch Openstreetmap bekommen k\u00f6nnte. Das w\u00e4re ehr was f\u00fcr ne Bachelorarbeit ^^<\/p>\n<p>gis:<br \/>\nGeo Informations System<br \/>\ngeotiff: kombination eines Bildes mit geographischen Daten. Quasi Standard. Bildinformation mit jedem Programm darstellbar.<\/p>\n<p>http:\/\/trac.osgeo.org\/geotiff\/ Library zum einlesen und erstellen von geotiff Datein.<br \/>\napt-get install libgeotiff-dev geotiff-bin<\/p>\n<p>Programm qlandkarte zum anzeigen von diversen Karten<br \/>\nhttp:\/\/sourceforge.net\/apps\/mediawiki\/qlandkartegt\/<br \/>\napt-get install qlandkartegt<\/p>\n<p><u><strong>GUI<\/strong><\/u><\/p>\n<p>Ja hier geht es um das Programm mit der Benutzeroberflaeche worueber wir auch geredet haben.<br \/>\nIch hab noch kein gescheiten Namen dafuer. SELFEcontrol oder so?<br \/>\nWerd demnaechst erstmal Infos sammeln was genau es koennen soll. Umso leicher ist es zu programmieren.<br \/>\nDrei Teilprogramme werden auf jeden Fall integriert.<\/p>\n<p><u><strong>Namelist Editor<\/strong><\/u><\/p>\n<p>Der Namelist Editor ist zu 90% fertig. Es fehlen noch paar Schoenheitskorrekturen und ich muss das<br \/>\nProgramm mal in Benutzung von andern Usern sehen. Sonst tut es das was es soll.<br \/>\nsvn co https:\/\/fortrannamelist.svn.sourceforge.net\/svnroot\/fortrannamelist fortrannamelist <\/p>\n<p>Todo:<br \/>\nneuer Check: Simulations Start- Endzeiten ueberpruefen<\/p>\n<p><u><strong>Visualisierung<\/strong><\/u><\/p>\n<p>Mein Visualisierungsprogramm hatte ich Anfang des Jahres komplett neu geschrieben und es \"katerFEMpresenter\"<br \/>\ngetauft. Es gibt zwar noch etliche Ideen die ich einbauen will, aber im grossen und ganzen ist es<br \/>\nschon gut benutzbar um Netze anzuzeigen.<\/p>\n<p><strong>Features<\/strong><\/p>\n<p>- beliebig viele Netze laden<br \/>\n- besonders grosse Netze koennen mit der \"minimal\" Funktion besonders RAM sparend geladen werden<br \/>\n- Elemente, Nodes oder Tiefen colorieren<br \/>\n- Kanten des Netzes darstellbar<br \/>\n- Element oder Node Nummer darstellbar<br \/>\n- Graph des Netzes darstellbar<br \/>\n- sceenshot funktion<br \/>\n- Elemente mit der Maus Markierbar und deren Daten als Tabelle anzeigen<br \/>\n- \"gehe zu\" Element-, Node Nummer<br \/>\n- Zoom Funktion<\/p>\n<p><strong>Welches Features geplant sind<\/strong><\/p>\n<p>- remote Netze laden: man ist z.B. am CLuster eingeloggt und will sich ein Netz laden.<br \/>\n  Forwarding von X ist langsam. Besser die Node und Element Daten auf den Client Rechner<br \/>\n  kopieren und dort rendern.<\/p>\n<p>- neuere OpenGL nutzen: Momentan benutze ich sehr alte und langsame Techniken um das Netz<br \/>\n  zu rendern. OpenGL Ver. 3 bietet Techniken um grosse Daten sehr viel schneller zu rendern.<br \/>\n  Parallel dazu plane ich nur den Qt eigenen Renderer ohne OpenGL zu nutzen, da es doch recht<br \/>\n  viele Linux Rechner ohne 3D Graphik Treiber gibt.<\/p>\n<p>- Webpage mit Screenshots und Beschreibung erstellen<\/p>\n<p>- und noch vieles mehr :D<\/p>\n<p><u><strong>libkater<\/strong><\/u><br \/>\n<strong>Features<\/strong><\/p>\n<p>- Laden, speichern (plaintext und binaer) von Netzen<br \/>\n- sortieren von Netzen<br \/>\n- FORTRAN Interface<br \/>\n- finden von Inseln und Randknoten<br \/>\n- erstellen von Nachbarsbeziehungen zwischen Knoten, Kanten und Elemente<br \/>\n- finden von Knoten und Elemente anhand von X Y Koordinaten (katerSuche)<\/p>\n<p><strong>geplante Features<\/strong><\/p>\n<p>- Code von Altlasten entfernen und den Programmierstyle verbessern. (Ich hab in den letzen<br \/>\n  2 Jahren viel gelernt wie man ein groesseres Softwareprojekt schreibt)<\/p>\n<p>- Segmentation Fault und floating point exception (divison through zero) Fehler abfangen und die<br \/>\n  wichtigsten Variablen ausgeben. Dieser Bugreport kann mir dann per Mail geschickt werden.<\/p>\n<p>- Doku auffrischen und Beispiele erstellen wie man die lib nutzt<\/p>\n<p>- lib Qt tauglich machen, so dass aus Qt Programme mit der LIB gescheit kommuniziert werden kann<\/p>\n<p>- Test fuer die Flaeche des Dreieckes.<br \/>\n Test Laenge Seite kleiner als Summe Seiten\/2<br \/>\n Test Laenge Seite ungleich 0<br \/>\n Test Laenge\/Flaeche im Verh\u00e4ltnis Number??<br \/>\n Test schreiben fuer adj Matrix accuracy??<br \/>\n Test Adressen der Variablen merken\/Vergleichen<\/p>\n<p>- katersuche ueberdenken. Die Suche ist auf maximale Schnelligkeit ohne Ruecksicht auf RAM Verbrauch<br \/>\n  ausgelegt. Ich plane eine zweite geometrische Suche anhand von R-Trees einzubauen, die deutlich<br \/>\n  weniger RAM verbraucht und dennoch gut schnell ist. Die Initialisierungszeit verkuerzt sich dann auch.<\/p>\n<p>  Wichtig ist auch, dass die Suche mit dem Rendertechniken kombiniert werden kann. Denn um ein Netz<br \/>\n  mit Millionen Knoten rendern zu koennen werden aehnliche Speicherstruckturen wie die katerSuche erstellt.<br \/>\n  Hier muss man die Daten ja nicht doppelt speichern.<\/p>\n<p><strong>wichtige interne \u00c4ndeurngen<\/strong><br \/>\n- eigene Gleitkommavariable definieren und im ganzen Projekt nutzen, um wenn n\u00f6tig zwischen float, double und long double zu wechseln<\/p>\n<p>- eine andere Gleitkommagenauigkeit zum speicher als zum rechnen nehmen. Zur Laufzeit wechseln? Spart die H\u00e4lfte an RAM, aber die Rechengenauigkeit kann bleiben.<\/p>\n<p>- md5 hast der adressen wichtiger variablen machen um sie im fehlerfall zu verifizieren. segfault vorher abfangen<\/p>\n<p>- union zum speicher der xyz daten. getrennt in gleitkomma oder als array, so dass man sie schneller lesen kann aus ner biaerd datei. oder so dass man sie wie ein array behandeln kann<\/p>\n<p>- OO Struktur. Grundriss :<br \/>\nclass CMeshData<br \/>\n{<br \/>\n  x, y, z<br \/>\n}<\/p>\n<p>class CMesh<br \/>\n{<br \/>\n  CMeshData meshdata<\/p>\n<p>  load(string filename)<br \/>\n}<\/p>\n<p>CMesh::load(string filename)<br \/>\n{<br \/>\n  CMeshReader(filename, format).read(meshdata)<br \/>\n}<\/p>\n<p>CMeshReader::read()<br \/>\n{<br \/>\n   readerData.create CMeshIOHandler()<br \/>\n   readerData.handler.read(meshdata)<br \/>\n}<\/p>\n<p>class CMeshIOHandler<br \/>\n{<br \/>\n  check for a handler that can handle the file<br \/>\n}<\/p>\n<p>class CWabauPlainHander :: CMeshIOHandler<br \/>\n{<br \/>\n}<\/p>\n<p>class CWabauBinaerHander :: CMeshIOHandler<br \/>\n{<br \/>\n}<\/p>\n<p>class CNetCDFHandler :: CMeshIOHandler<br \/>\n{<br \/>\n}<\/p>\n<p><u><strong>polygon<\/strong><\/u><\/p>\n<p>Einlesen der polygon.dat und darstellen, verschieben und interpolieren der Knoten.<\/p>\n<p>- es funktioniert das Darstellen und verschieben Handgesetzer Punkte<\/p>\n<p>- zwischen den Punkten wird eine kubische Bezierkurve interpoliert.<br \/>\n  Es ist garantiert dass die Interpolierte Line durch die vom User<br \/>\n  vorgegebenen Punkte geht. Die Benutzung von kubischen Bezierkurven<br \/>\n  statt quadratische bringt einige Vorteile. Eine gezeichnete Parabel kommt<br \/>\n  von oben links und geht nach oben recht. Ein Polygon 3. Grades kommt<br \/>\n  von oben links und geht nach unten recht, kann aber auch nach oben<br \/>\n  rechts gehen. Das funktioniert, weil man bei<br \/>\n  f(x) = ax^3 + bx^2 + cx +d den Paramater  a = 0 setzt kann. Das ergibt<br \/>\n  die Gleichung einer Parabel.<br \/>\n<a href=\"http:\/\/130.83.152.138\/temp\/interpolated.jpg\">http:\/\/130.83.152.138\/temp\/interpolated.jpg<\/a> Versuch 1<br \/>\n<a href=\"http:\/\/130.83.152.138\/temp\/interpolated2.jpg\">http:\/\/130.83.152.138\/temp\/interpolated2.jpg<\/a>Versuch 2<br \/>\n Vllt. Verwendung einer externen LIB die  B-Splines erzeugen kann.<\/p>\n<p>- mal diesen spline algo ausprobieren <a href=\"http:\/\/www-lehre.informatik.uni-osnabrueck.de\/~cg\/2002\/skript\/node59.html\">http:\/\/www-lehre.informatik.uni-osnabrueck.de\/~cg\/2002\/skript\/node59.html<\/a><\/p>\n<p>- Herausfinden bei wieviel Knoten Qt schlapp macht. In der Doku sagen die, dass man viele 2D Items darstellen kann und haben ein beispiel mit 40000 Items.<\/p>\n<p>Was ich noch nicht ganz klar vor mir sehe:<br \/>\n- irgendwie mit geo Daten kombinieren.<br \/>\n- Die Interpolierten Polygone wieder als polygon.dat abspeichern?<br \/>\n- Und die interpolierten Polygone bzw. die eingelesenen aus der polygon.dat sollen sowohl ueber einem Bild<br \/>\nals auch ueber einem Netz darstellbar sein.<br \/>\nOder soll ein Bild, darauf das Netz und darauf das Polygon dargestellt werden? Und das mit millionen von<br \/>\nKnoten? <\/p>\n<p><u><strong>Allgemeine Programmiertipps f\u00fcr schnellere Programme<\/strong><\/u><br \/>\nSpr\u00fcnge sind teuer. Vermeide es wild umher zu springe. Vermeide es \u00fcberhaupt zu springen. Es k\u00f6nnen keine Befehle vorraus<br \/>\nberechnet werden, wenn durch einen Sprung pl\u00f6tzlich woanders gerechnet wird.<br \/>\nSchleifen die lange laufen sind gut. Wenn 100mal zum Schleifenanfang gesprungen wurde, wird das wohl auch beim 101. Mal<br \/>\npassieren: Sprungvorhersage funktioniert.<\/p>\n<p>Vermeide Spr\u00fcnge in Schleifen. Z.B. so nicht:<\/p>\n<p>Schleife \u00fcber alle Knoten<br \/>\nSchleife \u00fcber alle Richtungen<br \/>\nSchleife \u00fcber alle Frequenzen<br \/>\nif petsc then petscSolver<br \/>\nelse otherSolver<\/p>\n<p>Besser:<\/p>\n<p>if petsc then<br \/>\nSchleife..<br \/>\nSchleife..<br \/>\nSchleife..<\/p>\n<p>else<br \/>\nSchleife...<br \/>\nSchleife...<br \/>\nSchleife...<\/p>\n<p>Funktions argument nonnull nutzen um den compiler zu sagen, dass<br \/>\npointer niemals NULL sind. siehe auch http:\/\/gcc.gnu.org\/onlinedocs\/gcc\/Function-Attributes.html<\/p>\n<p><u><strong>Diverse Notizen<\/strong><\/u><\/p>\n<p>Die Schleifeninvariante enth\u00e4lt Aussagen dar\u00fcber, was vor und nach jeder Iteration gilt. Das hei\u00dft, inkonsistente \"Kraut-und-R\u00fcben-Zust\u00e4nde\" mitten in einer Iteration werden \u00fcbersprungen, und nur der konsistente Zustand au\u00dferhalb der Iterationen wird beschrieben. Die Schleifeninvariante soll zusammen mit der Abbruchbedingung beweisen, dass das Ergebnis des Algorithmus korrekt ist, falls der Algorithmus terminiert. Das hei\u00dft, sie muss alles enthalten, was f\u00fcr dieses Ziel gebraucht wird.<\/p>\n<p>Die Schleifenvariante enth\u00e4lt hingegen Aussagen dar\u00fcber, was sich durch eine Iteration ver\u00e4ndert, also worin der Unterschied zwischen dem Zustand nach i-1 Iterationen und dem Zustand nach i Iterationen besteht. Die Schleifenvariante soll zusammen mit der Abbruchbedingung beweisen, dass der Algorithmus terminiert. Das hei\u00dft, sie muss alles enthalten, was ben\u00f6tigt wird um einzusehen, dass der Algorithmus sich Schritt f\u00fcr Schritt der Abbruchbedingung n\u00e4hert.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>QGIS usage ---------- * Haltungs LUT durch join realisiert attribute( get_feature('test_haltungen', 'NR', attribute($currentfeature, 'AB')), 'Bez') Netzlogik * Fehlenden Haltungen \/ Unterbrechungen Haltungsfilter \"Z1\" 0 and \"AB\" < 1000 and \"EntwaesArt\" 'KR' * Alleinstehende Haltungen Haltungsfilter: \"Z1\" = 0 and \"AB\" < 1000 and \"EntwaesArt\" 'KR' * L\u00e4nge ungewohenlich Haltungsfilter: \"L [m]\" > ($length + 5) [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":-1,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-818","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/pages\/818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=818"}],"version-history":[{"count":82,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/pages\/818\/revisions"}],"predecessor-version":[{"id":5094,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/pages\/818\/revisions\/5094"}],"wp:attachment":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}