Creating and Linking Components in ESMF and CCA Eric Hutton Cyberinformatics and numerics working group February 2008.

Slides:



Advertisements
Similar presentations
Introduction to C++ An object-oriented language Unit - 01.
Advertisements

Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 12 Introduction to ASP.NET.
Three types of remote process invocation
A Workflow Engine with Multi-Level Parallelism Supports Qifeng Huang and Yan Huang School of Computer Science Cardiff University
Question Bank. Explain the syntax of if else statement? Define Union Define global and local variables with example Concept of recursion with example.
Linked Lists Mohammed Almashat CS /03/2006.
C++ Language Fundamentals. 2 Contents 1. Introduction to C++ 2. Basic syntax rules 3. Declaring and using variables.
Programming Paradigms Introduction. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1:
CS 450 MPX P ROJECT Introduction to MPX. I NTRODUCTION TO MPX The MPX module is divided into six modules Module R1: User Interface Module R2: Process.
1 JAC : Aspect Oriented Programming in Java An article review by Yuval Nir and Limor Lahiani.
Designing a CCA Framework for Accelerators Khushbu Agarwal Daniel Chavarría Manoj Krishnan Ian Gorton.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Fundamentals of Strings and Characters Characters.
Fall 2009 CSDMS WG Update James Syvitski CSDMS Integration Facility Boulder CO.
Contributing source code to CSDMS Albert Kettner.
Creating Shareable Models By: Eric Hutton CSDMS - Community Surface Dynamics Modeling System (pronounced ˈ s ɪ stəms) Image by Flickr user Let There Be.
Creating Shareable Models By: Eric Hutton CSDMS is the Community Surface Dynamics Modeling System (pronounced ˈ s ɪ stəms) Image by Flickr user Let There.
CS 225 Lab #2 - Pointers, Copy Constructors, Destructors, and DDD.
Guide To UNIX Using Linux Third Edition
Overview and Demonstration of the Community Surface Dynamics Modeling System CSDMS Terrestrial Working Group Meeting February 2, Boulder, CO. Scott.
. Memory Management. Memory Organization u During run time, variables can be stored in one of three “pools”  Stack  Static heap  Dynamic heap.
Fall 2009 CSDMS WG Update James Syvitski CSDMS Integration Facility Boulder CO.
Advanced Java New York University School of Continuing and Professional Studies.
An Introduction to the Common Component Architecture for the poster: A Study of the Common Component Architecture (CCA) Forum Software Daniel S. Katz,
A Hybrid Decomposition Scheme for Building Scientific Workflows Wei Lu Indiana University.
Lab::VISA. VISA, GPIB, etc. Instruments can be connected in various ways: Serial port, GPIB, VXI, TCP/IP, etc. GPIB (hardware and software) –GPIB (IEEE488):
Java Introduction Lecture 1. Java Powerful, object-oriented language Free SDK and many resources at
DEVS Namespace for Interoperable DEVS/SOA
1 CW 2015, Manchester, 04/ Coupling technology benchmarking in IS-ENES2 Coupling technology benchmarking in IS-ENES2 IS-ENES2 WP10-T3 Evaluation.
 200 Total Points ◦ 74 Points Writing Programs ◦ 60 Points Tracing Algorithms and determining results ◦ 36 Points Short Answer ◦ 30 Points Multiple Choice.
ESMF Code Generation Rocky Dunlap Spencer Rugaber Leo Mark Georgia Tech College of Computing.
Programming Languages and Paradigms Object-Oriented Programming (Part II)
Modularity Lecture 4 Course Name: High Level Programming Language Year : 2010.
1 ENERGY 211 / CME 211 Lecture 26 November 19, 2008.
VHDL FLI. FLI Definition FLI routines are C programming language functions that provide procedural access to information within the HDL simulator.
Grid Computing Research Lab SUNY Binghamton 1 XCAT-C++: A High Performance Distributed CCA Framework Madhu Govindaraju.
Selected Topics in Software Engineering - Distributed Software Development.
ACS Error System APIs: C++ Bogdan Jeram European Southern Observatory July 2005ESO.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
COP4020 Programming Languages Names, Scopes, and Bindings Prof. Xin Yuan.
Processes Introduction to Operating Systems: Module 3.
ISBN Chapter 11 Abstract Data Types and Encapsulation Concepts.
Earth System Modeling Framework Python Interface (ESMP) October 2011 Ryan O’Kuinghttons Robert Oehmke Cecelia DeLuca.
Chapter 1 Introduction Major Data Structures in Compiler
Babel F2003 Struct Support Update and FACETS integration Funded by DOE (TASCS) Grant No DE-FC02-07ER25805, DOE Grant No DE-FG02-04ER84099 and Tech-X Stefan.
Review 1 Polish Notation Prefix Infix Postfix Precedence of Operators Converting Infix to Postfix Evaluating Postfix.
Progress on Component-Based Subsurface Simulation I: Smooth Particle Hydrodynamics Bruce Palmer Pacific Northwest National Laboratory Richland, WA.
Page 1© Crown copyright 2004 FLUME Marco Christoforou, Rupert Ford, Steve Mullerworth, Graham Riley, Allyn Treshansky, et. al. 19 October 2007.
Object Oriented Software Development 4. C# data types, objects and references.
Data Design and Implementation. Definitions Atomic or primitive type A data type whose elements are single, non-decomposable data items Composite type.
C LANGUAGE Characteristics of C · Small size
Curator: Gap Analysis (from a schema perspective) Rocky Dunlap Spencer Rugaber Georgia Tech.
STL CSSE 250 Susan Reeder. What is the STL? Standard Template Library Standard C++ Library is an extensible framework which contains components for Language.
Kernel Structure and Infrastructure David Ferry, Chris Gill CSE 522S - Advanced Operating Systems Washington University in St. Louis St. Louis, MO
CCA Common Component Architecture CCA Forum Tutorial Working Group A Simple CCA Component Application.
C Programming Day 2. 2 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/LA07/003 Version No. 1.0 Union –mechanism to create user defined data types.
CCA Distributed Framework Interoperability. Goals Assume you have two (or more) framework instances. –Assume it contains a network of component instances.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Memory Management in Java Mr. Gerb Computer Science 4.
“Port Monitor”: progress & open questions Torsten Wilde and James Kohl Oak Ridge National Laboratory CCA Forum Quarterly Meeting Santa Fe, NM ~ October.
INTRODUCTION BEGINNING C#. C# AND THE.NET RUNTIME AND LIBRARIES The C# compiler compiles and convert C# programs. NET Common Language Runtime (CLR) executes.
Interfacing the Internet of a Trillion Things
Names and Attributes Names are a key programming language feature
APPENDIX a WRITING SUBROUTINES IN C
CSE687 – Object Oriented Design
UNIT – I Linked Lists.
MEMORY REPRESENTATION OF STACKS
Kernel Structure and Infrastructure
Programming Languages and Paradigms
Language Definitions Chap. 3 of Orange Book.
ENERGY 211 / CME 211 Lecture 28 December 1, 2008.
Presentation transcript:

Creating and Linking Components in ESMF and CCA Eric Hutton Cyberinformatics and numerics working group February 2008

CSDMS My experiences creating and linking components from existing code CCA Common Component Architecture Create component: sedflux Create component: sedflux River Plume Subsidence Create an ESMF applicationLink components to create an application

CSDMS A component is an encapsulated “object” defined by its public interfaces ComponentInterface

CSDMS sedflux links process models to build stratigraphy on continental margins

CSDMS To become an ESMF component, the sedflux programming interface was refactored Like many models, sedflux is called from the command line, sedflux Input filesOutput files Create a sedflux library that contains a programming interface: sedflux_init(): anything done before time stepping (allocate resources, open files, etc.) sedflux_run():advance the model one time step sedflux_destroy():anything done after time stepping

CSDMS The first difficulty was that sedflux is written in c and ESMF in FORTRAN Details in communicating between c and FORTRAN can be both platform and compiler specific. Difficulties calling c from FORTRAN (or vice versa) include: Name mangling:Foo() becomes foo_, or FOO, or FOO_, or … Arrays:FORTRAN arrays are not simply pointers Unsupported features:Complex numbers, pointers, structs

CSDMS The second difficulty was that sedflux is not grid based in the same way the ESMF is sedflux thinks of the world as cubes of sediment stacked on top of one another to form columns. ESMF likes uniform grids of variables. To get around this, sedflux kept track of its own state through global variables.

CSDMS To get around this, sedflux kept track of its own state through global variables ESMF application sedflux state struct foo Init components Destroy components Run component: sedflux Run component: foo For another component to interact with sedflux it needs to know about this state variable. Imposes sedflux’s implementation. Not Good

CSDMS In CCA, interfaces (or ports) define a component A port is not an implementation only a description. The description is written in either SIDL (Scientific Interface Definition Language) or XML. interface deflectionPort extends gov.cca.Port { // Set constants from a file. int init( in string file ); // Get the deflection (in meters) due to the applied loads. int get_deflection_in_m( inout rarray dz(len), in rarray x(len), in rarray load(len), in int len ); } A subsidence component could have a deflectionPort

CSDMS Driver uses A CCA component can both use and provide data through a port provides sedflux uses provides River Uses river dynamics to drive plume model Provides a handle to the sedflux environment

CSDMS Smaller models provide another level of granularity Subsidence get_deflection_in_m() set_params() Hyperpycnal Plume get_deposit_in_m() get_deposit_mass() run_plume() Plume get_deposit_in_m() get_deposit_mass() run_plume() ComponentPort

CSDMS Give load grid to subsidence Get back a deflection grid provides Convert uses Get a sedflux handle and convert to load grid Change elevations in sedflux Adding a subsidence model to sedflux requires a converter component sedflux uses Uses a sedflux handle Provides a deflection grid provides Subsidence

CSDMS In CCA, components are connected using ccafe ccafe can be run in gui mode (needs some work): or on the command line: > connect Driver deflectionPort Subside deflectionPort

CSDMS In conclusion, CCA offers more flexibility while ESMF more infrastructure Questions? But ESMF could be incorporated into CCA as a toolkit CCA is more flexible Language neutral Does not impose a framework ESMF comes with a large amount of infrastructure Grid manipulation TimersStates Decomposition elements