A GTK / Fortran Binding

Total Page:16

File Type:pdf, Size:1020Kb

A GTK / Fortran Binding gtk-fortran: a GTK / Fortran binding 1. Vincent MAGNIN, 2. James TAPPIN, 3. Jens HUNGER, 4. Jerry DELISLE 1. Lille University (France), 2. RAL Space (UK), 3. Technische Universität Dresden (Germany), 4. GFortran Team (USA) FortranCon 2020, Zurich, 2-4 July 2020 1 / 20 Why gtk-fortran? Installing, building, running Welcome to the machine To Infinity and Beyond! Plan 1 Why gtk-fortran? 2 Installing, building, running 3 Welcome to the machine 4 To Infinity and Beyond! 2 / 20 1. Vincent MAGNIN, 2. James TAPPIN,3. Jens HUNGER, 4. Jerry DELISLE gtk-fortran: a GTK / Fortran binding The scientist and the unknown pleasures of visualization. Do scientists dream of electric sheep being artists? Scientific visualization is essential and is an art (left). Nothing in the Fortran standard, except ASCII art? (right) Figure: first discovered pulsar [1]. Figure: the Mandelbrot set in 1978. 3 / 20 You can’t always get what you want Visual Fortran (Digital, Compaq, Intel) has the Quickwin library (Windows). When migrating to Linux, I was looking for something: to make bitmap (or vectorial) drawing, and scientific plotting. To build Graphical User Interfaces (GUI). Using only standard Fortran. Multi-platform: Linux, Windows, MacOS. Free software (as in free beer and freedom). A perennial solution. There was/is a lot of great tools like pilib (GTK 2, but needing a C compiler), DISLIN, PLplot, gnuplot, interfacing with another language (japi), etc. But I still hadn’t found what I was looking for. 4 / 20 But if you try sometime you find: GTK 2nd May 2007 13:10 Tobias BURNUS posted on the comp.lang.fortran newsgroup a demo creating an empty GTK 2 window: GTK is mainly written in C language, and Fortran 2003 introduced interoperability with C. About GTK GNU LGPL license. Multi-platform. Who’s behind? The GNOME Foundation (RedHat. ). 2002: GTK 2.0 2011: GTK 3.0 2020(?): GTK 4.0 5 / 20 GTK is not a library. It’s a collection of libraries ! GLib: general-purpose utility library, GObject: the GLib Object System, GTK itself, GdkPixbuf: pixel drawing (even without GUI), Cairo: vectorial drawing, GIO : input/output, GDK, Pango, ATK. 6 / 20 A GTK / Fortran binding gtk-fortran Project launched with J. DELISLE, J. TAPPIN and J. HUNGER. First commit: 9 January 2011. Now ≈ 10 000 functions in gtk-fortran! Not only about GUI and graphics! But also strings, regex, date and time, files, network utilities, lists, trees, hash tables, etc. Only 500 functions used in our tools and examples. Figure: Commits in the GTK 3 branch. 7 / 20 Why gtk-fortran? Installing, building, running Welcome to the machine To Infinity and Beyond! Installing and building gtk-fortran Download the zip from https://github.com/vmagnin/gtk-fortran/wiki or git clone: $ git clone [email protected]:vmagnin/gtk−fortran.git Install tools and dependencies (Debian/Ubuntu names): $ sudo apt install gfortran cmake libgtk−3−dev libplplot−dev plplot−driver−cairo Build the project and install the library: $ mkdir build&& cd build $ cmake.. $ make $ sudo make install Compile your own program: $ gfortran my_app.f90$(pkg −config −−cflags −−libs gtk−3−fortran) 8 / 20 1. Vincent MAGNIN, 2. James TAPPIN,3. Jens HUNGER, 4. Jerry DELISLE gtk-fortran: a GTK / Fortran binding And I went down to the demonstration Figure: hl_cairo_clock.f90 (Kubuntu) Figure: hl_plplot4e.f90 (Windows 7) Figure: mandelbrot_pixbuf.f90 (MacOS) Figure: julia_pixbuf.f90 (Fedora) 9 / 20 Some projects using gtk-fortran "The VCU nuclear reactor simulator, Richmond Pile 3, is a classroom and research tool that emulates a large commercial pressurized water reactor (PWR)." [2] https://egr.vcu.edu/departments/mechanical/research/nuclear-simulator-lab/ Uncertradio [3]: https://www.thuenen.de/de/fi/arbeitsbereiche/meeresumwelt/ leitstelle-umweltradioaktivitaet-in-fisch/uncertradio/ 10 / 20 Why gtk-fortran? Installing, building, running Welcome to the machine To Infinity and Beyond! Nobody said it was easy. Event driven programming Based on a main loop, idle most of the time. If something happens a signal is emitted, received by the concerned widget, which calls its corresponding callback function. It’s all about C pointers and C types C pointers toward functions, objects, data. C types: int, double, char. The GTK official documentation is totally C oriented: to be able to read C function prototypes is better. 11 / 20 1. Vincent MAGNIN, 2. James TAPPIN,3. Jens HUNGER, 4. Jerry DELISLE gtk-fortran: a GTK / Fortran binding Example: the button widget To create my "Bye" button, I need to call that C function whose prototype is in /usr/include/gtk-3.0/gtk/gtkbutton.h: GtkWidget ∗ gtk_button_new_with_label( const gchar ∗ l a b e l); § ¤ ¦The gtk-fortran interface for that function is in src/gtk-auto.f90: ¥ f u n c t i o n gtk_button_new_with_label(label) bind(c) § use iso_c_binding, o n l y : c_ptr, c_char ¤ type (c_ptr):: gtk_button_new_with_label c h a r a c t e r ( kind=c_char), dimension ( ∗ ):: label end function ¦In my Fortran program: ¥ use iso_c_binding § use gtk, o n l y : gtk_button_new_with_label, g_signal_connect ¤ ... my_button= gtk_button_new_with_label("Bye"//c_null_char) !I need also to connect my button toa callback function: c a l l g_signal_connect(my_button,"clicked"//c_null_char, c_funloc( my_callback_function)) ¦ ¥ 12 / 20 How the Fortran interfaces are generated? Before each gtk-fortran release The python program cfwrapper.py parses the GTK .h header files, generates the src/*-auto.f90, using especially regular expressions. $./cfwrapper.py −g3 Pass 1: looking for enumerators, funptr and derived types... Pass 2: looking for C functions... /usr/include/atk−1.0 => atk−auto.f90 85781 bytes /usr/include/cairo => cairo−auto.f90 133740 bytes /usr/include/gdk−pixbuf−2.0 => gdk−pixbuf−auto.f90 58223 bytes /usr/include/glib−2.0 => glib−auto.f90 1299171 bytes /usr/include/gtk−3.0/gdk => gdk−auto.f90 208504 bytes /usr/include/gtk−3.0/gtk => gtk−auto.f90 1319554 bytes /usr/include/gtk−3.0/unix−print => unix−print−auto.f90 24488 bytes /usr/include/pango−1.0 => pango−auto.f90 171656 bytes 13 / 20 === Statistics(ready to paste in the Status wiki page) === ## GTK 3.24.12, GLib 2.62.4, Ubuntu 19.10 x86_64, Python 3.7.5 vmagnin, Tue, 30 Jun 2020 15:12:24 +0000 * nb_files scanned = 759 * nb_generated_interfaces = 10335 * nb_deprecated_functions = 1118 * nb_type_errors = 61 * nb_errors(others) = 348 * nb_lines treated = 33888 * nb_variadic functions = 136 * nb_enumerators = 376 * nb_win32_utf8= 4 * Number of types = 78 * Computing time: 12.69s * SHA1: a4542484b3a002678f983d936482f244ad5222c2 >>>>>> SHA1 HAS BEEN MODIFIED! It was1 cfa7b5cf0c2d36a8962109c8da6d3b6f758398a <<<<<< Used types:[’c_ptr’,’c_int’,’c_char’,’c_double’,’c_funptr’ ,’c_int64_t’,’c_size_t’,’c_long’,’c_int32_t’,’c_float ’,’c_int8_t’,’?’,’c_int16_t’,’c_long_double’] Tools to ease the pain A High Level library (J. Tappin) Offers a simplified interface for most useful GUI functions. Can be mixed with direct GTK calls. gtkf-sketcher (J. Hunger) Complicated GUI can be graphically designed with Glade, saved in an XML file, used by gtkf-sketcher to generate a gtk-fortran program. Other tools usemodules.pl: to generate your "USE, ONLY:" statements Some shell scripts. 14 / 20 Why gtk-fortran? Installing, building, running Welcome to the machine To Infinity and Beyond! How to contribute? Build and test with various systems and compilers: use the gtk3 stable branch, or the gtk4 branch if you are already familiar with GTK. Report issues on GitHub. Help improve the documentation. Write tutorials. Write new examples (only 500 functions tested). ... 15 / 20 1. Vincent MAGNIN, 2. James TAPPIN,3. Jens HUNGER, 4. Jerry DELISLE gtk-fortran: a GTK / Fortran binding SWOT matrix of the project Strengths Weaknesses Standard Fortran. Few contributors. GTK is perenial and multi-platform. No GTK programming tutorial. gtk-fortran maintained since 2011. The cfwrapper.py needs refactoring. Includes a High Level library. The binding is not 100 % complete. Many commented examples. Opportunities Threats FortranCon 2020. Fortran is losing users. Fortran-lang Community and tools. New compilers: Flang, LFortran. GTK 4 soon released (Fall 2020?). Use GObject Introspection? 16 / 20 Appendices Thank you for listening! I will be pleased to answer your questions now or later on Slack, GitHub, Fortran-lang Discourse. 17 / 20 1. Vincent MAGNIN, 2. James TAPPIN,3. Jens HUNGER, 4. Jerry DELISLE gtk-fortran: a GTK / Fortran binding Acknowledgments Tobias BURNUS who posted on the comp.lang.fortran newsgroup (2nd May 2007 13:10) an example of a program creating an empty GTK+ 2 window. Contributors and users who are not in the authors: Mehdi CHINOUNE (CMake parallelisation), Ian HARVEY. 18 / 20 Useful links The gtk-fortran home [4]: https://github.com/vmagnin/gtk-fortran/wiki The GTK home: https://www.gtk.org/ Where to find its official documentation: https://developer.gnome.org/ The GTK developers blog: https://blog.gtk.org/ The GNOME Discourse: https://discourse.gnome.org/c/platform Fresh GTK News: https://gitlab.gnome.org/GNOME/gtk/-/blob/master/NEWS 19 / 20 References Harold Dumont Craft. Radio observations of the pulse profiles and dispersion measures of twelve pulsars. Ithaca, N.Y., 1970. Ph.D. Thesis, OCLC: 741854775. D. Tincher, S. Bilbao y León, and J. Miller. Progress on real-time, interactive modeling and simulation of nuclear power plants. volume 2017-September, 2017. Günter Kanisch. Generalized evaluation of environmental radioactivity measurements with uncertradio. part i: Methods without linear unfolding. Applied Radiation and Isotopes, 110:28 – 41, 2016. V. MAGNIN, J. TAPPIN, J. HUNGER, and J. DELISLE. gtk-fortran: a GTK+ binding to build Graphical User Interfaces in Fortran. The Journal of Open Source Software, 5(34), February 2019. 20 / 20.
Recommended publications
  • Fortran Resources 1
    Fortran Resources 1 Ian D Chivers Jane Sleightholme May 7, 2021 1The original basis for this document was Mike Metcalf’s Fortran Information File. The next input came from people on comp-fortran-90. Details of how to subscribe or browse this list can be found in this document. If you have any corrections, additions, suggestions etc to make please contact us and we will endeavor to include your comments in later versions. Thanks to all the people who have contributed. Revision history The most recent version can be found at https://www.fortranplus.co.uk/fortran-information/ and the files section of the comp-fortran-90 list. https://www.jiscmail.ac.uk/cgi-bin/webadmin?A0=comp-fortran-90 • May 2021. Major update to the Intel entry. Also changes to the editors and IDE section, the graphics section, and the parallel programming section. • October 2020. Added an entry for Nvidia to the compiler section. Nvidia has integrated the PGI compiler suite into their NVIDIA HPC SDK product. Nvidia are also contributing to the LLVM Flang project. Updated the ’Additional Compiler Information’ entry in the compiler section. The Polyhedron benchmarks discuss automatic parallelisation. The fortranplus entry covers the diagnostic capability of the Cray, gfortran, Intel, Nag, Oracle and Nvidia compilers. Updated one entry and removed three others from the software tools section. Added ’Fortran Discourse’ to the e-lists section. We have also made changes to the Latex style sheet. • September 2020. Added a computer arithmetic and IEEE formats section. • June 2020. Updated the compiler entry with details of standard conformance.
    [Show full text]
  • Current Status of Win32 Gdk Implementation
    Current status of Win32 Gdk implementation Bertrand Bellenot - [email protected] Features (recall) ! Same environment on every system : ! Same look and feel on every platform. ! Simplify the code maintenance : ! No need to care about a « windows specific code ». ! Simplify functionality extension : ! No need to implement the code twice, once for windows and once for other OS. ! Only use TVirtualX. Actual Status (recall) ! The actual code uses a modified version of gdk and glib, the GIMP low-level libraries ported on win32. In practice, this means that we only need to link with gdk.lib, glib.lib and iconv.dll as additional libraries (hopefully less in the future). These libraries are under LGPL, so there are no licensing issues in using and distributing them. ! As original version of gdk was not doing everything needed by root (as font orientation!), I did have to slightly modify the original code. Points fixed since last year ! Some characters were not displayed. " ! Some problems with icon’s transparency. " ! The event handling was not perfect. " ! OpenGL was not working. " Events handling architecture (actual) TSystem CINT TGClient TVirtualX Gdk Threads issue ! From gdk developper FAQ : ! Without some major restructuring in GDK-Win32, I don't think there is any chance that GTK+ would work, in general, in a multi-threaded app, with different threads accessing windows created by other threads. ! One problem is that each thread in Windows have its own message queue. GDK-Win32 currently uses just one "message pump" in the main thread. It will never see messages for windows created by other threads. Threads issue ! As gdk is not thread safe, I had to create a separate thread from within the gdk calls are made.
    [Show full text]
  • The GNOME Desktop Environment
    The GNOME desktop environment Miguel de Icaza ([email protected]) Instituto de Ciencias Nucleares, UNAM Elliot Lee ([email protected]) Federico Mena ([email protected]) Instituto de Ciencias Nucleares, UNAM Tom Tromey ([email protected]) April 27, 1998 Abstract We present an overview of the free GNU Network Object Model Environment (GNOME). GNOME is a suite of X11 GUI applications that provides joy to users and hackers alike. It has been designed for extensibility and automation by using CORBA and scripting languages throughout the code. GNOME is licensed under the terms of the GNU GPL and the GNU LGPL and has been developed on the Internet by a loosely-coupled team of programmers. 1 Motivation Free operating systems1 are excellent at providing server-class services, and so are often the ideal choice for a server machine. However, the lack of a consistent user interface and of consumer-targeted applications has prevented free operating systems from reaching the vast majority of users — the desktop users. As such, the benefits of free software have only been enjoyed by the technically savvy computer user community. Most users are still locked into proprietary solutions for their desktop environments. By using GNOME, free operating systems will have a complete, user-friendly desktop which will provide users with powerful and easy-to-use graphical applications. Many people have suggested that the cause for the lack of free user-oriented appli- cations is that these do not provide enough excitement to hackers, as opposed to system- level programming. Since most of the GNOME code had to be written by hackers, we kept them happy: the magic recipe here is to design GNOME around an adrenaline response by trying to use exciting models and ideas in the applications.
    [Show full text]
  • GTK Lesson 3: Containers
    CSci493.70 Graphical User Interface Programming Prof. Stewart Weiss Lesson 3: Containers Lesson 3: Containers 1 Container Widgets and Packing When you design an application with a graphical user interface, you put various widgets inside of one another and implicitly dene a hierarchy of what's inside of what. This is a containment hierarchy. Some of the widgets you use have specic purposes, such as buttons, text entry boxes, and menus. If you design your GUI on paper, you draw these widgets where you want them and making them the sizes that you want them to be. However, getting them to be in those specic positions with their specic sizes using a library like GTK+ requires that you use widgets whose primary purpose is for laying out other widgets. These widgets are called container widgets. In Lesson 2, we introduced the GtkContainer class, which is the ancestral class of all container widgets and which we now cover in more detail. Recall that containers can be partitioned into two categories: (1) those that can hold only a single child widget, and (2) those that can hold more than one. Containers that can contain only a single widget are called decorator containers, because their principal purpose is to add functionality and decorative eects to the child widget. Containers that can hold several children are called layout containers, because they are used primarily for laying out the child widgets within their (GDK) windows. Layout containers assign sizes and positions to their children. 1.1 The GtkContainer Class Before we look at their concrete subclasses, we will examine what functionality and properties GtkContainers possess.
    [Show full text]
  • The Glib/GTK+ Development Platform
    The GLib/GTK+ Development Platform A Getting Started Guide Version 0.8 Sébastien Wilmet March 29, 2019 Contents 1 Introduction 3 1.1 License . 3 1.2 Financial Support . 3 1.3 Todo List for this Book and a Quick 2019 Update . 4 1.4 What is GLib and GTK+? . 4 1.5 The GNOME Desktop . 5 1.6 Prerequisites . 6 1.7 Why and When Using the C Language? . 7 1.7.1 Separate the Backend from the Frontend . 7 1.7.2 Other Aspects to Keep in Mind . 8 1.8 Learning Path . 9 1.9 The Development Environment . 10 1.10 Acknowledgments . 10 I GLib, the Core Library 11 2 GLib, the Core Library 12 2.1 Basics . 13 2.1.1 Type Definitions . 13 2.1.2 Frequently Used Macros . 13 2.1.3 Debugging Macros . 14 2.1.4 Memory . 16 2.1.5 String Handling . 18 2.2 Data Structures . 20 2.2.1 Lists . 20 2.2.2 Trees . 24 2.2.3 Hash Tables . 29 2.3 The Main Event Loop . 31 2.4 Other Features . 33 II Object-Oriented Programming in C 35 3 Semi-Object-Oriented Programming in C 37 3.1 Header Example . 37 3.1.1 Project Namespace . 37 3.1.2 Class Namespace . 39 3.1.3 Lowercase, Uppercase or CamelCase? . 39 3.1.4 Include Guard . 39 3.1.5 C++ Support . 39 1 3.1.6 #include . 39 3.1.7 Type Definition . 40 3.1.8 Object Constructor . 40 3.1.9 Object Destructor .
    [Show full text]
  • Development Environment for the Raspberry Pi Using a Cross Compiling Toolchain and Eclipse | Hertaville 07.10.13 13:37
    Development Environment for the Raspberry Pi using a Cross Compiling Toolchain and Eclipse | Hertaville 07.10.13 13:37 Hertaville Welcome to Hertaville! Development Environment for the Raspberry Pi using a Cross Compiling Toolchain and Eclipse Posted on September 28, 2012 by halherta UPDATED July 15th 2013 In this blog entry the setup of a cross-compiling development environment for the Raspberry Pi will be demonstrated. This will include the Official Raspbian (armhf) cross compiling toolchain (available from github) Eclipse for C/C++ Developers (Linux) We will finally write a simple Hello World program on our development PC, compile it using the cross compiler and then deploy it onto our Raspberry Pi board to run it. I’m going to assume that you have already installed a Raspbian Wheezy image on your RPi board and that you have Linux installed on your desktop PC. For this tutorial I am using the Crunchbang 11 Linux OS (64-bit) on my PC. The instructions provided should work on most Debian/Ubuntu based Linux distributions running directly on a PC or as a a guest operating system via VMWare/ VirtualBox . A remote debugging tutorial; which I consider to be the continuation of this tutorial, can be found here. Finally, Derek Molloy has a great video tutorial on setting up a similar environment for the Beaglebone. Watching this video was incredibly informative and helped me set up this tutorial. So what is a cross compiling toolchain and why use one ? A native compiler such as the default gcc tool on the PC is a compiler that runs on an Intel machine, as well as creates binaries intended to be run on an Intel machine.
    [Show full text]
  • Drawing in GTK+
    CSci493.70 Graphical User Interface Programming Prof. Stewart Weiss Drawing in GTK+ Drawing in GTK+ Background In order to understand how to draw in GTK, you rst have to understand something about how GTK draws widgets, because how GTK draws widgets has an important role in how you design your drawing application. An understanding of how GTK draws widgets is also required if you ever plan to build your own custom widgets. Windows and Clipping Most windowing systems are designed around the idea that an application's visual display lies within a rectangular region on the screen called its window. The windowing system, e.g. Gnome or KDE or Explorer, does not automatically save the graphical content of an application's windows; instead it asks the application itself to repaint 1 its windows whenever it is needed. For example, if a window that is stacked below other windows gets raised to the top, then a client program has to repaint the area that was previously obscured. When the windowing system asks a client program to redraw part of a window, it sends an exposure event to the program that contains that window. An exposure event is simply an event sent from the underlying windowing system to a widget to notify it that it must redraw itself. In this context, a "window" means "a rectangular region with automatic clipping", not a top-level application window. Clipping is the act of removing portions of a window that do not need to be redrawn, or looked at the other way, it is determining which are the only regions of a window that must be redrawn.
    [Show full text]
  • Embedded Linux Training
    Free Electrons Embedded Linux training Gregory Clement Thomas Petazzoni Michael Opdenacker Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Rights to copy © Copyright 2004-2011, Free Electrons [email protected] Electronic version of this document available on http://free-electrons.com/doc/training/embedded-linux Updates will be available on http://free-electrons.com/doc/training/embedded-linux/ Attribution ± ShareAlike 3.0 Corrections, suggestions, You are free contributions and translations are welcome! to copy, distribute, display, and perform the work to make derivative works Latest update: Feb 14, 2011 to make commercial use of the work Under the following conditions Attribution. You must give the original author credit. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Linux kernel Linux device drivers Free Electrons Board support code Our services Mainstreaming kernel code Kernel debugging Custom Development System integration
    [Show full text]
  • Gtk Marries Ada: the GUI Technology Revolution
    GtkGtk MarriesMarries AdaAda:: TheThe GUIGUI TechnologyTechnology RevolutionRevolution [email protected] OverviewOverview History of GtkAda GtkAda Features Why Gtk Rather Than Other Toolkits? Why GtkAda rather than Gtk+? GtkAdaGtkAda -- HistoryHistory á The GIMP – GNU Photoshop clone á The Gtk+ library – Becomes independent á GtkGlade: a Gtk+ GUI builder á Gnome: a desktop manager á GVD: the GNU Visual Debugger GtkAdaGtkAda FeaturesFeatures ááHigh-level binding to the Gtk+ library – object-oriented – type safety – small and efficient ááHighly portable – Unixes: Linux, Solaris, … – Windows NT ááNative GtkAdaGtkAda FeaturesFeatures (2)(2) ááEvent handling ááDrawing services – Lines, rectangles, … – OpenGL (3D graphics) ááStyle support ááLarge set of widgets GtkAdaGtkAda -- WidgetWidget setset á Two types of widgets – containers and visual objects á About 100 widgets are provided á High-level widgets – notebook, text widget, tree, spin button, table, toolbar, ... GtkAdaGtkAda -- ScreenshotsScreenshots á Ctree GtkAdaGtkAda -- ScreenshotsScreenshots (2)(2) á OpenGL WhyWhy Gtk+?Gtk+? á Portable á Native á Extensible á Open Source á Actively developped á Thread-safe WhyWhy Gtk+?Gtk+? (2)(2) á High level widgets á Easy to use scrolling capabilities á Wide range of users á Very powerful layout capabilities – Complete set of containers á Powerful and easy to use GUI builder á Easy to bind TheThe GUIGUI BuilderBuilder ááMulti-language GUI builder – Language-independent save file (XML). – Code-generation specific to each language. – Dynamic loading
    [Show full text]
  • With SCL and C/C++ 3 Graphics for Guis and Data Plotting 4 Implementing Computational Models with C and Graphics José M
    Presentation Agenda Using Cross-Platform Graphic Packages for 1 General Goals GUIs and Data Plotting 2 Concepts and Background Overview with SCL and C/C++ 3 Graphics for GUIs and data plotting 4 Implementing Computational Models with C and graphics José M. Garrido C. 5 Demonstration of C programs using graphic libraries on Linux Department of Computer Science College of Science and Mathematics cs.kennesaw.edu/~jgarrido/comp_models Kennesaw State University November 7, 2014 José M. Garrido C. Graphic Packages for GUIs and Data Plotting José M. Garrido C. Graphic Packages for GUIs and Data Plotting A Computational Model Abstraction and Decomposition An software implementation of the solution to a (scientific) Abstraction is recognized as a fundamental and essential complex problem principle in problem solving and software development. It usually requires a mathematical model or mathematical Abstraction and decomposition are extremely important representation that has been formulated for the problem. in dealing with large and complex systems. The software implementation often requires Abstraction is the activity of hiding the details and exposing high-performance computing (HPC) to run. only the essential features of a particular system. In modeling, one of the critical tasks is representing the various aspects of a system at different levels of abstraction. A good abstraction captures the essential elements of a system, and purposely leaving out the rest. José M. Garrido C. Graphic Packages for GUIs and Data Plotting José M. Garrido C. Graphic Packages for GUIs and Data Plotting Developing a Computational Model Levels of Abstraction in the Process The process of developing a computational model can be divided in three levels: 1 Prototyping, using the Matlab programming language 2 Performance implementation, using: C or Fortran programming languages.
    [Show full text]
  • Plotting Package Evaluation
    Plotting package evaluation Introduction We would like to evaluate several graphics packages for possible use in the GLAST Standard Analysis Environment. It is hoped that this testing will lead to a recommendation for a plotting package to be adopted for use by the science tools. We will describe the packages we want to test, the tests we want to do to (given the short time and resources for doing this), and then the results of the evaluation. Finally we will discuss the conclusions of our testing and hopefully make a recommendation. According to the draft requirements document for plotting packages the top candidates are: ROOT VTK VisAD JAS PLPLOT There has been some discussion about using some python plotting package: e.g.,Chaco, SciPy, and possibly Biggles (suggested in Computers in Science and Engineering). A desired feature is have is the ability to get the cursor position back from the graphics package. We will look for this desired feature. An additional desired feature would be to have the same graphics package make widgets or have a closely associated widget friend. Widget friends will not be tested here, but will have to studied before agreeing to use it. Package Widget Friend(s) Comments Biggles WxPython Plplot PyQt, Tk, java The Python Qt interface is only experimental at present. ROOT Comes with its own GUI INTEGRAL makes GUIs from ROOT graphics libs. We hear this was a bit of a challenge to do, but much of the work is already done for us. for us. Tests: The testing is to be carried out separately in the Windows and Linux environments.
    [Show full text]
  • Volume 30 Number 1 March 2009
    ADA Volume 30 USER Number 1 March 2009 JOURNAL Contents Page Editorial Policy for Ada User Journal 2 Editorial 3 News 5 Conference Calendar 30 Forthcoming Events 37 Articles J. Barnes “Thirty Years of the Ada User Journal” 43 J. W. Moore, J. Benito “Progress Report: ISO/IEC 24772, Programming Language Vulnerabilities” 46 Articles from the Industrial Track of Ada-Europe 2008 B. J. Moore “Distributed Status Monitoring and Control Using Remote Buffers and Ada 2005” 49 Ada Gems 61 Ada-Europe Associate Members (National Ada Organizations) 64 Ada-Europe 2008 Sponsors Inside Back Cover Ada User Journal Volume 30, Number 1, March 2009 2 Editorial Policy for Ada User Journal Publication Original Papers Commentaries Ada User Journal — The Journal for Manuscripts should be submitted in We publish commentaries on Ada and the international Ada Community — is accordance with the submission software engineering topics. These published by Ada-Europe. It appears guidelines (below). may represent the views either of four times a year, on the last days of individuals or of organisations. Such March, June, September and All original technical contributions are articles can be of any length – December. Copy date is the last day of submitted to refereeing by at least two inclusion is at the discretion of the the month of publication. people. Names of referees will be kept Editor. confidential, but their comments will Opinions expressed within the Ada Aims be relayed to the authors at the discretion of the Editor. User Journal do not necessarily Ada User Journal aims to inform represent the views of the Editor, Ada- readers of developments in the Ada The first named author will receive a Europe or its directors.
    [Show full text]