Objects A quick overview of Object-oriented, Distributed, Network-based software A quick overview of Object-oriented, Distributed, Network-based software.

Slides:



Advertisements
Similar presentations
"Recent development of e- Science & Grid in Thailand" 24 January 2006 Piyawut Srichaikul, NECTEC Putchong Uthayopas, KU.
Advertisements

Common Instrument Middleware Architecture and Federation of Instrument Resources for X-ray Crystallography Rick McMullen Indiana University.
OMII-Europe Repository Steven Newhouse Director, OMII-UK.
Yokogawa Network Solutions Presents:
LAB SESSION 7 Graphical user interface Applet fundamentals Methods in applets Execution of an applet Graphics class.
10/04/2001 Associate Professor CS Department University of Valenciennes France Dr. Dhavy Gantsou.
This set of notes is adapted from that provided by “Computer Science – A Structured Programming Approach Using C++”, B.A. Forouzan & R.F. Gilberg, Thomson.
Lecture 8. MIPS Instructions #4 – Branch Instructions #2
Title Stephan Husen Institute of Geophysics, ETH Zurich, Switzerland,
Performance analysis of a Grid-based Instrumentation Device Farm Luca Berruti 1, Franco Davoli 1, Stefano Vignola 1, Sandro Zappatore 1 1 CNIT – University.
Towards the Design and Implementation of the DAME prototype: OGSA Compliant Grid Services on the White Rose Grid Sarfraz A Nadeem University of Leeds.
Introduction to Java Kiyeol Ryu Java Programming Language.
School of Computing Science CMT1000 © Ed Currie Middlesex University Lecture 9: 1 CMT1000: Introduction to Programming Ed Currie Lecture 11: Objects.
Background basics of Across-the-Internet on-Demand Service DMS Workshop Stevenson, WA Wed 08 June 2005 David Okaya Univ. Southern California Basic design.
Principles of Object-Oriented Software Development The language Java.
Course Map The Java Programming Language Basics Object-Oriented Programming Exception Handling Graphical User Interfaces and Applets Multithreading Communications.
Ch5: Software Specification. 1 Overview  Use of specifications  Specification qualities  Classification of specification styles  Verification of specifications.
Jun Peng Stanford University – Department of Civil and Environmental Engineering Nov 17, 2000 DISSERTATION PROPOSAL A Software Framework for Collaborative.
Diffusion scheduling in multiagent computing system MotivationArchitectureAlgorithmsExamplesDynamics Robert Schaefer, AGH University of Science and Technology,
Web-based Portal for Discovery, Retrieval and Visualization of Earth Science Datasets in Grid Environment Zhenping (Jane) Liu.
LIGO-G E ITR 2003 DMT Sub-Project John G. Zweizig LIGO/Caltech Argonne, May 10, 2004.
12.
Hunt for Molecules, Paris, 2005-Sep-20 Software Development for ALMA Robert LUCAS IRAM Grenoble France.
1Object-Oriented Program Development Using C++ Computer Science and Programming Languages Computers are ubiquitous Computer literacy is essential Computer.
Web Services: a Mechanism for Across-the-Internet On Demand Computing and Communication DMS Workshop Stevenson, WA Wed 08 June 2005 What are Web Services,
NeSC Grid Apps Workshop Exposing Legacy Applications as OGSI Components using pyGlobus Keith R. Jackson Distributed Systems Department Lawrence Berkeley.
UDDI ebXML(?) and such Essential Web Services Directory and Discovery.
Remote Procedure Call Andrew Whitaker CSE451. Remote Procedure Call RPC exposes a programming interface across machines: interface PriceService { Price.
EGrid Software Packages Overview. EGrid Introduction Egrid Introduction : A description of the main software packages EGrid Inside : A detailed description.
Early Intervention Techniques Dave Donaghy, Hewlett-Packard, Bristol, UK Tom Crick, Cardiff Metropolitan University, UK.
Chapter 8 Evaluating Alternatives for Requirements, Environment, and Implementation.
MACIASZEK, L.A. (2001): Requirements Analysis and System Design. Developing Information Systems with UML, Addison Wesley Chapter 6 - Tutorial Guided Tutorial.
Computer Science II 810:062 Section 01. How is CS I different from CS II? When you teach Java there are a series of decisions that have to be made…
CPSC 102: Computer Science II Dr. Roy P. Pargas 408 Edwards Hall Office Hours 10:00-11:00 am MWF 2:00-3:00 pm TTh.
Introduction to dCache Zhenping (Jane) Liu ATLAS Computing Facility, Physics Department Brookhaven National Lab 09/12 – 09/13, 2005 USATLAS Tier-1 & Tier-2.
7April 2000F Harris LHCb Software Workshop 1 LHCb planning on EU GRID activities (for discussion) F Harris.
IT at the IRIS DMC: Synergy with the CIG By Tim Ahern, IRIS DMS Program Manager By Tim Ahern, IRIS DMS Program Manager.
1 SOVAP - BOS (Bolometric Oscillation Sensor) DAVOS Scientific meeting A1: calibration A2: validation A3: Science products determination A4: Routine and.
Systems Prog. & Script. - Heriot Watt Univ 1 Systems Programming & Scripting Lecture 11: The Distributed Object Model.
Grids - the near future Mark Hayes NIEeS Summer School 2003.
Jian Gui WANG New Implementation of Agriculture Models APAN19---Jan New Implementations of Agriculture Models Using Mediate Architecture.
Object-Oriented Design and Implementation of the OE-Scheduler in Real-time Environments Ilhyun Lee Cherry K. Owen Haesun K. Lee The University of Texas.
LEGS: A WSRF Service to Estimate Latency between Arbitrary Hosts on the Internet R.Vijayprasanth 1, R. Kavithaa 2,3 and Raj Kettimuthu 2,3 1 Coimbatore.
GRID Overview Internet2 Member Meeting Spring 2003 Sandra Redman Information Technology and Systems Center and Information Technology Research Center National.
Data Management: Products and Procedures for August 2007 Cruises Bill Howe.
Logic Analyzer ECE-4220 Real-Time Embedded Systems Final Project Dallas Fletchall.
1 CSC111H Introduction Dennis Burford
Getting Started with the Open Services Gateway Initiative (OSGi) CNT 5517 Dr. Sumi Helal, Ph.D. Professor Computer & Information Science & Engineering.
Slide 1 What the business needs  How to build it Functional requirements  + Nonfunctional requirements Performance System environment issues Problem.
A quick overview of Network communications A quick overview of Network communications Anthony Lomax Anthony Lomax Scientific Software Mouans-Sartoux, France.
EGEE-III INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Vassiliki Pouli
STCM: A spatio-temporal Component Model Hinde Lilia Bouziane Christian Perez PARIS Project-Team INRIA Rennes/IRISA Toulouse, France, December 7 th 2007.
PRT Performance Response Team TF-NGN, October 18 th, 2002 Victor Reijs
WP6 Technical Work J Lauterjung GFZ Potsdam. Objective The main objective is the development of a novel and efficient e- infrastructure concept addressing.
GridRPC Sources / Credits: IRISA/IFSIC IRISA/INRIA Thierry Priol et. al papers.
CS Class 04 Topics  Selection statement – IF  Expressions  More practice writing simple C++ programs Announcements  Read pages for next.
E-commerce Architecture Ayşe Başar Bener. Client Server Architecture E-commerce is based on client/ server architecture –Client processes requesting service.
Introduction to Java Programming by Laurie Murphy Revised 09/08/2016.
Distributed and Parallel Processing George Wells.
Metaprogramming and its relevance in Software Engineering
Introduction to R.
null, true, and false are also reserved.
CS-0401 INTERMEDIATE PROGRAMMING USING JAVA
JavaScript Reserved Words
Remote method invocation (RMI)
Instructor: Alexander Stoytchev
Separating Interface from Implementation
Calypso Service Architecture
Learning Combinational Logic
Presentation transcript:

objects A quick overview of Object-oriented, Distributed, Network-based software A quick overview of Object-oriented, Distributed, Network-based software Anthony Lomax Anthony Lomax Scientific Software Mouans-Sartoux, France Anthony Lomax Anthony Lomax Scientific Software Mouans-Sartoux, France

program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end program horrible(tr,gr,t,g,dist) common/mess/t,g,h,p,str,ctr,r1,r2 real*8 d,tr,gr,t,g,h,p,str,ctr,r1,r2,st,ct,cdg, &sdg,q,x,y,z,az12,az21,p0,horrible if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z if(tr.eq.t.and.gr.eq.g) goto 100 h= d0 p= d0 str=dsin(tr) ctr=dcos(tr) if(ctr.eq.0.d0) ctr= d0 if(str.eq.0.d0) str= d0 r1= d0/dsqrt(1.d0-h*str*str) if(t.eq.0.d0) t= d0 goto st=dsin(t) ct=dcos(t) r2= d0/dsqrt(1.d0-h*st*st) cdg=dcos(g-gr) sdg=dsin(g-gr) q=st*ctr/((1.d0+p)*ct*str)+h*r1*ctr/(r2*ct) x=r2*ct*cdg y=r2*ct*sdg z=(1.d0-h)*(r2*st-r1*str) az12=datan2(sdg,(q-cdg)*str) q=str*ct/(ctr*st*(1.d0+p))+h*r2*ct/(r1*ctr) horrible=q*x-az12*y+z return end computer operating system classic program I/O user interface data management logic / calculations procedure

computer operating system classic program I/O user interface logic / calculations data management objects www intranet Object-oriented, Distributed, Network-based software Object-oriented, Distributed, Network-based software computer A computer B

logic / calculations user interface data management objects

logic / calculations package net.alomax.seis; import net.alomax.math.*; /** A basic Seismogram object */ public class BasicSeismogram extends BasicItem implements Serializable { public TimeSeries timeSeries;// The seismogram data public BasicChannel channel;// The channel information public BasicHypocenter hypocenter;// The hypocenter public int iyear;// The year of the reference time public int ijday;// The day of year of reference time public int ihour, imin, isec;// The reference hour and min public double sec;// The reference sec public double timeMin;// The offset of the first sample /** Returns the amplitude at a given time. */ public final double ampAtTime(double time) { double sampleOffset = (time - timeMin) / (double) timeSeries.sampleInt; int nsample = (int) sampleOffset; if (nsample = timeSeries.sampleLength() - 1) return INVALID_AMPLITUDE; double fract = sampleOffset - (double) nsample; double amp1, amp2; amp1 = (double) timeSeries.sampleAt(nsample); amp2 = (double) timeSeries.sampleAt(nsample + 1); return(amp1 + (amp2 - amp1) * fract); } /** Removes the mean of the time series samples. */ public void removeMean() { timeSeries.removeMean(); } }// end class BasicSeismogram package net.alomax.seis; import net.alomax.math.*; /** A basic Seismogram object */ public class BasicSeismogram extends BasicItem implements Serializable { public TimeSeries timeSeries;// The seismogram data public BasicChannel channel;// The channel information public BasicHypocenter hypocenter;// The hypocenter public int iyear;// The year of the reference time public int ijday;// The day of year of reference time public int ihour, imin, isec;// The reference hour and min public double sec;// The reference sec public double timeMin;// The offset of the first sample /** Returns the amplitude at a given time. */ public final double ampAtTime(double time) { double sampleOffset = (time - timeMin) / (double) timeSeries.sampleInt; int nsample = (int) sampleOffset; if (nsample = timeSeries.sampleLength() - 1) return INVALID_AMPLITUDE; double fract = sampleOffset - (double) nsample; double amp1, amp2; amp1 = (double) timeSeries.sampleAt(nsample); amp2 = (double) timeSeries.sampleAt(nsample + 1); return(amp1 + (amp2 - amp1) * fract); } /** Removes the mean of the time series samples. */ public void removeMean() { timeSeries.removeMean(); } }// end class BasicSeismogram

package net.alomax.seis; import net.alomax.math.*; /** A basic Seismogram object */ public class BasicSeismogram extends BasicItem implements Serializable { public TimeSeries timeSeries;// The seismogram data public BasicChannel channel;// The channel information public BasicHypocenter hypocenter;// The hypocenter public int iyear;// The year of the reference time public int ijday;// The day of year of reference time public int ihour, imin, isec;// The reference hour and min public double sec;// The reference sec public double timeMin;// The offset of the first sample /** Returns the amplitude at a given time. */ public final double ampAtTime(double time) { double sampleOffset = (time - timeMin) / (double) timeSeries.sampleInt; int nsample = (int) sampleOffset; if (nsample = timeSeries.sampleLength() - 1) return INVALID_AMPLITUDE; double fract = sampleOffset - (double) nsample; double amp1, amp2; amp1 = (double) timeSeries.sampleAt(nsample); amp2 = (double) timeSeries.sampleAt(nsample + 1); return(amp1 + (amp2 - amp1) * fract); } /** Removes the mean of the time series samples. */ public void removeMean() { timeSeries.removeMean(); } }// end class BasicSeismogram package net.alomax.seis; import net.alomax.math.*; /** A basic Seismogram object */ public class BasicSeismogram extends BasicItem implements Serializable { public TimeSeries timeSeries;// The seismogram data public BasicChannel channel;// The channel information public BasicHypocenter hypocenter;// The hypocenter public int iyear;// The year of the reference time public int ijday;// The day of year of reference time public int ihour, imin, isec;// The reference hour and min public double sec;// The reference sec public double timeMin;// The offset of the first sample /** Returns the amplitude at a given time. */ public final double ampAtTime(double time) { double sampleOffset = (time - timeMin) / (double) timeSeries.sampleInt; int nsample = (int) sampleOffset; if (nsample = timeSeries.sampleLength() - 1) return INVALID_AMPLITUDE; double fract = sampleOffset - (double) nsample; double amp1, amp2; amp1 = (double) timeSeries.sampleAt(nsample); amp2 = (double) timeSeries.sampleAt(nsample + 1); return(amp1 + (amp2 - amp1) * fract); } /** Removes the mean of the time series samples. */ public void removeMean() { timeSeries.removeMean(); } }// end class BasicSeismogram data methods messages restricted access restricted access distributed and dynamic program “program” (software process) object

data methods messages restricted access restricted access distributed and dynamic program distributed data management distributed data management plug-in, applet download plug-in, applet download distributed & dynamic distributed & dynamic http : ftp : Java-RMI Corba SOAP Java-RMI Corba SOAP http:

Object-oriented, Distributed, Network-based seismology Object-oriented, Distributed, Network-based seismology

A quick overview of Object-oriented, Distributed, Network-based software References A quick overview of Object-oriented, Distributed, Network-based software References Anthony Lomax Scientific Software, Mouans-Sartoux, France Anthony Lomax Scientific Software, Mouans-Sartoux, France General: Developer.com - Developer.com deesign - O'Reilly Network - Scientific: D. Walker, Computer Science, Univ of Wales Cardiff, UK The Globus Project: GRID computing - UK Research Councils e-science - Seismological: Information Technology by T. Owens, Geological Sciences University of South Carolina, USA SCEC Community Modeling Environment - General: Developer.com - Developer.com deesign - O'Reilly Network - Scientific: D. Walker, Computer Science, Univ of Wales Cardiff, UK The Globus Project: GRID computing - UK Research Councils e-science - Seismological: Information Technology by T. Owens, Geological Sciences University of South Carolina, USA SCEC Community Modeling Environment -